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