说我有这个班:
class Test<T> {
stuff: T;
// these lines don't compile :(
// whatIsStuff(this: Test<any[]>): string
// whatIsStuff(this: Test<any>): number
whatIsStuff() {
if(this.stuff instanceof Array)
return "an array"
else
return 1
}
}
如何描述whatIsStuff()
的返回值?我希望注释掉的行有效,但它抱怨this
的存在。
如果我有一个免费功能,这个工作正常:
function whatIsStuffFor(a: Test<any[]>): string
function whatIsStuffFor(a: Test<any>): number
function whatIsStuffFor(a: Test<any>): any {
if(this.stuff instanceof Array)
return "an array"
else
return 1
}
答案 0 :(得分:0)
不确定您要完成的任务,但您可以使用联合类型来描述string or number
返回类型:
class Test<T> {
stuff: T;
constructor(value : T) {
this.stuff = value;
}
whatIsStuff() : string | number {
if (this.stuff instanceof Array)
return "an array";
else
return 1;
}
}
var x = new Test("foobar")
var y = new Test([1, 2])
console.log(x.whatIsStuff()) // 1
console.log(y.whatIsStuff()) // an array
答案 1 :(得分:0)
我是个白痴,我提出的语法在https://github.com/Microsoft/TypeScript/pull/6739
之后工作得很好