Typescript:为类型别名创建扩展方法
我创建了一个类型别名,如下所示Typescript:为类型别名创建扩展方法,typescript,Typescript,我创建了一个类型别名,如下所示 export type Nullable<T> = T | null | undefined; 但是,我得到了以下错误 “Nullable”仅引用类型,但在此处用作值 有人能帮忙吗?谢谢。以下是我评论中的建议作为答案: 您看到的编译器错误试图指出type定义不生成任何代码,只用于类型检查 要定义可在Nullable实例上调用的hasValue方法,必须将Nullable定义为类。使用此选项需要注意的一点是,它会产生一些开销(即必须创建包装值的实例)
export type Nullable<T> = T | null | undefined;
但是,我得到了以下错误
“Nullable”仅引用类型,但在此处用作值
有人能帮忙吗?谢谢。以下是我评论中的建议作为答案:
您看到的编译器错误试图指出
type
定义不生成任何代码,只用于类型检查
要定义可在Nullable
实例上调用的hasValue
方法,必须将Nullable
定义为类。使用此选项需要注意的一点是,它会产生一些开销(即必须创建包装值的实例)
一个基本的例子:
class Nullable<T> {
value: T;
constructor(value: T) {
this.value = value;
}
hasValue() {
return this.value != null;
}
/* ... */
}
类可为空{
值:T;
构造函数(值:T){
这个值=值;
}
hasValue(){
返回此值!=null;
}
/* ... */
}
或者,您可以将hasValue
定义为一个自由函数,它接受一个Nullable
参数。type
定义不会在TypeScript中发出代码。它们仅用于类型检查。如果您想定义hasValue
,可以将Nullable
定义为类(即某些值的容器),这样您就可以将hasValue
定义为方法,或者将hasValue
定义为接受Nullable
的函数。您好@miqh,谢谢您的建议。如果您想将您的评论转换为答案,很乐意接受它作为答案。
class Nullable<T> {
value: T;
constructor(value: T) {
this.value = value;
}
hasValue() {
return this.value != null;
}
/* ... */
}