我开始使用TypeScript,并在注释类中遇到有关BP的问题。
因此,例如:
interface PluginManagerInterface {
_plugins: {
[name: string]: {
[status: string]: boolean
}
}
}
class PluginManager implements PluginManagerInterface {
_plugins: {
[key: string]: {
[status: string]: boolean
}
}
constructor() {
this._plugins = {};
}
// ...code
}
我是否需要在此处将_plugins
变量注释从接口复制粘贴到类?还是我使用注释错误?
谢谢!
答案 0 :(得分:2)
我的意思是,您可以使用它来创建类型或接口:
interface Plugins {
[name: string]: {
[status: string]: boolean;
};
}
interface PluginManagerInterface {
_plugins: Plugins;
}
class PluginManager implements PluginManagerInterface {
_plugins: Plugins;
constructor() {
this._plugins = {};
}
// ...code
}
答案 1 :(得分:2)
是的,您需要再次在类中编写类型。 Typescript不会根据implements
子句推断属性类型。因此,如果您不指定类型,则默认为any
。 implements
仅检查类属性是否可以作为接口的实现(类型为any
的属性将匹配接口中的任何类型)。
您可以将复杂类型放在专用界面中,也可以使用类型查询:
interface PluginManagerInterface {
_plugins: {
[name: string]: {
[status: string]: boolean
}
}
}
class PluginManager implements PluginManagerInterface {
_plugins: PluginManagerInterface['_plugins']
constructor() {
this._plugins = {};
}
// ...code
}