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