说我有这两个类
abstract class Config {
abstract setName(name: string);
}
class MyConfig extends Config {
setName(name) {
// set name.
}
}
name
中的MyConfig
参数将属于any
类型。如果他们的类型没有被传递,那么输入抽象函数有什么意义呢?有没有办法让它在不触及MyConfig
课程的情况下输入?我想为第三方工具进行配置,并且不能指望用户输入抽象函数参数,即使它们应该。
有什么建议吗?
答案 0 :(得分:1)
如果抽象函数的类型没有被传递,那么输入抽象函数有什么意义呢?
输入抽象函数的关键是帮助那些选择加入静态类型检查的用户。在这些情况下,静态类型检查可以通过抱怨这个来防止错误:
// compiler: Class 'MyConfig' incorrectly extends base class 'Config'.
class MyConfig extends Config {
setName(name: number) {
}
}
对于不选择加入静态类型检查的用户,你是对的。 name
中的MyConfig
参数将是any
类型,编译器不会抱怨类型,并且您对抽象函数的输入无用。
无法强制TypeScript用户选择加入静态类型检查,因为无法阻止用户使用any
。那是设计上的。
建议:接受某些用户会选择进行静态类型检查而其他用户则不会。为那些提供类型的人提供类型。