2
在打字稿2.0,为什么我不能有一个功能型后卫:TypeScript 2.0方法类型的警卫?
function hasValue<T>(value: T | undefined): value is T { return value !== undefined; }
但不是方法型后卫?:
export class Maybe<T> {
constructor(public value: T | undefined) {}
hasValue(): this.value is T { return this.value !== undefined; }
}
错误的hasValue()
:
'{'或';'预期。
这是否与TypeScript 2.0相关?无论如何,“T中的值”中的标识符必须是范围内的某个标识符,例如参数。无论守卫是在一个功能还是一个方法上,这都是正确的。你可以把你的警卫写成'hasValue(value)的值是T {return value!== undefined; }',并将其称为'if(this.hasValue(this.value))...'。 –
2016-09-24 02:55:41