考虑下面的代码
namespace Add {
type AddType = {
(x: number, y: number): number;
};
const add: AddType = (x: number, y: number) => {
return x + y;
};
}
是否可以在下面的代码中为AddType添加一个“唯一符号”。
namespace AddUsingSymbol {
declare const AddSymbol: unique symbol;
type AddType = {
(x: number, y: number): number;
[AddSymbol]: void;
};
/* const add: AddType = (x: number, y: number) => {
return x + y;
}; */
// the code above does not compile
}
是否可以安全地使用Symbol创建AddType实例,而无需进行类型转换?
答案 0 :(得分:1)
如果您不想使用类型断言,那么我建议使用Object.assign()
将符号键属性复制到函数对象中,如下所示:
const add: AddType = Object.assign((x: number, y: number) => {
return x + y;
}, { [AddSymbol]: undefined });
编译器将其视为类型安全。好吧,希望能有所帮助;祝你好运!