我创建一个类型别名如下
export type Nullable<T> = T | null | undefined;
我想要一个扩展方法 hasValue
来检查实例是否为空或未定义。我尝试使用原型作为
Nullable.prototype.hasValue = function(): boolean => {
return Nullable<T>(this) === null || Nullable<T>(this) === undefined
}
但是我收到以下错误。
'Nullable' 仅指一种类型,但在此处用作值。
有人可以帮忙吗?谢谢。
答案 0 :(得分:1)
以下是我的评论中的建议作为答案:
您看到的编译器错误试图指出 type
定义不生成任何代码,仅用于类型检查。
要定义可在 hasValue
实例上调用的 Nullable
方法,您必须将 Nullable
定义为 class
。使用此选项需要注意的是它会产生一些开销(即必须创建包装值的实例)。
一个基本的例子:
class Nullable<T> {
value: T;
constructor(value: T) {
this.value = value;
}
hasValue() {
return this.value != null;
}
/* ... */
}
或者,您可以将 hasValue
定义为一个自由函数,它接受一个 Nullable
参数。