【发布时间】:2019-12-22 19:54:03
【问题描述】:
当参数是特定类型的类时,我对 TypeScript 中的类型提示有点卡住了。我正在尝试实现一个事件系统,当我使用来自 TypeScript 游乐场的代码时,对于纯 JavaScript,一切正常。但是,标准编译导致“TS2693:'C1'仅指一种类型,但在此处用作值”的错误。如何键入提示此方法?
function method
<C1 extends BaseClass, C2 extends BaseClass>
(c1: typeof C1, c2: typeof C2, callback: (arg1: C1, arg2: C2) => void){
// ...
}
完整示例:
abstract class BaseClass {}
const dict = {}
function method
<C1 extends BaseClass, C2 extends BaseClass>
(c1: typeof C1, c2: typeof C2, callback: (arg1: C1, arg2: C2) => void){
dict[c1] = dict[c1] || {};
dict[c1][c2] = dict[c1][c2] || [];
dict[c1][c2].push(callback);
}
class MyClass1 extends BaseClass{}
class MyClass2 extends BaseClass{}
method(MyClass1, MyClass2, (arg1: MyClass1, arg2: MyClass2) => {
console.log("Callback");
});
const c1 = new MyClass1();
const c2 = new MyClass2();
dict[MyClass1][MyClass2][0](c1, c2);
【问题讨论】:
-
链接不包含代码。您能否也发布一个带有用法示例的完整示例。
-
我认为
(c1: typeof C1, c2: C2, callback: (arg1: C1, arg2: C2) => void)在C1之前不需要typeof
标签: typescript types type-hinting