实现Typescript类接口不会保留方法类型

实现Typescript类接口不会保留方法类型,typescript,Typescript,我试图编写一个Typescript接口,然后编写一个实现该接口的类 问题是我似乎无法从接口获取方法签名以应用于类 下面是一个精简的示例: 导出接口Foo{ 条形图(值:字符串):无效; } 导出类MyFoo实现了Foo{ // ✔️ 类型脚本错误: //类型“MyFoo”中缺少属性“bar”,但类型“Foo”中需要属性“bar” } 导出类MyFoo实现了Foo{ //值被推断为“any”,而不是“string”, //并且返回类型不匹配没有任何错误 条(值){return true;} }

我试图编写一个Typescript接口,然后编写一个实现该接口的类

问题是我似乎无法从接口获取方法签名以应用于类

下面是一个精简的示例:

导出接口Foo{
条形图(值:字符串):无效;
}
导出类MyFoo实现了Foo{
// ✔️ 类型脚本错误:
//类型“MyFoo”中缺少属性“bar”,但类型“Foo”中需要属性“bar”
}
导出类MyFoo实现了Foo{
//值被推断为“any”,而不是“string”,
//并且返回类型不匹配没有任何错误
条(值){return true;}
}
编译器似乎知道
bar
方法应该存在,但出于某种原因没有保留它的签名

编译器似乎意识到bar方法应该存在,但由于某种原因并没有保留它的签名

对。原因如下:


因此,开发人员有责任添加他们需要的注释。

Type
任何
都可以分配给TypeScript中的任何其他类型。您应该在
方法的实现中指定
的类型。那么。如果不是
字符串
,编译器将抛出一个错误

通过在
tsconfig.json
文件中添加以下行,可以强制TypeScript编译器不允许任何隐式
any

"noImplicitAny": true

一般来说,最佳实践是显式地为函数参数和返回值添加类型,并尽可能避免
任何

因此,看起来确实发生了一些类型检查,尽管签名没有被准确保留

如果我试图用不兼容的类型实现我的
Foo
类,它会抱怨

导出接口Foo{
条形图(值:字符串):字符串;
}
导出类MyFoo实现了Foo{
// ✔️ 类型脚本错误:
//Type'(值:boolean)=>boolean'不可分配给Type'(值:string)=>string'。
条(值:布尔){return boolean;}
}