gpt4 book ai didi

typescript - 在接口(interface) typescript 中支持静态和非静态方法

转载 作者:行者123 更新时间:2023-12-01 11:14:13 25 4
gpt4 key购买 nike

所以显然(我是初学者)ts不支持界面中的静态方法但是有一个解决方法解释它Val's答案。当您的类只有静态方法时,它可以工作。但如果我的类是静态和非静态方法的组合,这将引发错误:

Class 'MyClass' incorrectly implements interface 'sampleInterface'.
Property 'staticFunction' is missing in type 'MyClass' but required in type 'sampleInterface'

知道如何支持吗?
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
}
}

最佳答案

一般需要两个接口(interface);一个用于类的实例端,一个用于类的静态端。例如:

interface SampleInterfaceInstancePart {
nonStaticFunction(/*something*/): Promise<void>;
}
interface SampleInterfaceStaticPart {
staticFunction(/*something*/): Promise<void>;
}

然后你可以使用你的 staticDecorator确保该类实现静态端,以及常规的旧 implements子句以确保它实现实例端:
@staticDecorator<SampleInterfaceStaticPart>()
class MyClass implements SampleInterfaceInstancePart {
public static async staticFunction(/*something*/): Promise<void> { }
public async nonStaticFunction(/*something*/): Promise<void> { }
}

希望有帮助;祝你好运!

关于typescript - 在接口(interface) typescript 中支持静态和非静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55055561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com