所以显然(我是初学者)ts 不支持接口中的静态方法,但是有一个解决方法解释了它Val 的答案。当您的类只有静态方法时,它会起作用。但是如果我的类是静态和非静态方法的组合,这将引发错误:
Class 'MyClass' incorrectly implements interface 'sampleInterface'.
Property 'staticFunction' is missing in type 'MyClass' but required in type 'sampleInterface'
Run Code Online (Sandbox Code Playgroud)
知道如何支持这个吗?
export function staticDecorator<T>() {
return (constructor: T) => {};
}
interface sampleInterface {
staticFynction(/*something*/): promise<void>;
nonStaticFynction(/*something*/): promise<void>;
}
@staticDecorator()
class MyClass implements sampleInterface {
public static staticFynction(/*something*/): promise<void>{
//something
}
public nonStaticFynction(/*something*/): promise<void>{
//something
}
}
Run Code Online (Sandbox Code Playgroud)
一般需要两个接口;一个用于类的实例端,一个用于类的静态端。例如:
interface SampleInterfaceInstancePart {
nonStaticFunction(/*something*/): Promise<void>;
}
interface SampleInterfaceStaticPart {
staticFunction(/*something*/): Promise<void>;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以使用 yourstaticDecorator来确保类实现静态端,并使用常规的 oldimplements子句来确保它实现实例端:
@staticDecorator<SampleInterfaceStaticPart>()
class MyClass implements SampleInterfaceInstancePart {
public static async staticFunction(/*something*/): Promise<void> { }
public async nonStaticFunction(/*something*/): Promise<void> { }
}
Run Code Online (Sandbox Code Playgroud)
希望有所帮助;祝你好运!
| 归档时间: |
|
| 查看次数: |
1974 次 |
| 最近记录: |