【问题标题】:Declare Typescript Interface for non Typescript class为非 Typescript 类声明 Typescript 接口
【发布时间】:2013-09-19 08:00:24
【问题描述】:

是否可以为纯 JavaScript 类声明 TypeScript 接口?

例如

function Foo(bar)
{
  this.bar=bar;
}

var x=new Foo("test"); // x is shown as any

我想为 Foo 声明一个接口:

interface IFoo
{
  bar: string;
}

但我不知道如何声明它。

function Foo(bar: string) : IFoo
{
  this.bar=bar;
}

给我“'Foo' 声明了一个非 void 返回类型,但没有返回表达式。”

(我不想将 Foo 重写为 TypeScript 类。)

【问题讨论】:

  • 可能有类似问题:stackoverflow.com/questions/3710275/…
  • @jsmorph 不,这是关于 TypeScript。
  • 正如@basarat 所说,将您的 JavaScript 代码与 TypeScript 代码分开,或将您的 JavaScript 代码转换为 TypeScript(它将编译成类似于您的原始 JavaScript 代码的版本)。

标签: javascript typescript


【解决方案1】:

你可以简单地将它声明为一个类:

declare class Foo{
    bar:string;
    constructor(bar:string);
}

var x=new Foo("test"); // x of type foo
x.bar="lala";

【讨论】:

  • 这不会编译 - 它给了我一个Duplicate identifier 'Foo'. for function Foo(bar) {...}!
  • 你需要把 JavaScript 代码放到 JavaScript 中。你不能输入打字稿并告诉编译器这是一个类而不是一个函数
  • 谢谢,我试图将纯 Javascript 库与 typescript 集成,结果成功了。
猜你喜欢
  • 2017-05-28
  • 2018-11-26
  • 1970-01-01
  • 2017-02-01
  • 2012-12-30
  • 2015-02-15
  • 1970-01-01
  • 1970-01-01
  • 2016-12-06
相关资源
最近更新 更多