为非Typescript类声明Typescript接口

3

是否可以为一个普通的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’ 声明了一个非空返回类型,但没有返回表达式。"
(我不想将 Foo 重写为 TypeScript 类。)

也许类似的问题:https://dev59.com/9XA65IYBdhLWcg3wogOe - jsmorph
@jsmorph 不是的,这跟 TypeScript 有关。 - laktak
正如@basarat所说,将您的JavaScript代码与TypeScript代码分开,或将您的JavaScript代码转换为TypeScript(这将编译成类似于原始JavaScript代码的版本)。 - Stephen Chung
1个回答

4
您可以将其声明为一个类:
declare class Foo{
    bar:string;
    constructor(bar:string);
}

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

这段代码无法编译 - 它会给我一个 Duplicate identifier 'Foo'. 的错误,因为有一个 function Foo(bar) {...} - laktak
4
您需要将JavaScript代码放到JavaScript文件中。您不能在TypeScript中编写代码并告诉编译器这是一个类而不是函数。 - basarat
谢谢,我一直在尝试将一个纯JavaScript库与TypeScript集成,这个方法解决了我的问题。 - cjohansson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接