這可能嗎? (沒有改變函數調用顯然沒有AKA AKA)
是的。
我相信你的情況,你會怎麼做
var a = function<T = any>() : T {
return null;
}
一般默認的TS 2.3進行了介紹。
默認類型泛型類型參數的語法如下:
TypeParameter :
BindingIdentifier Constraint? DefaultType?
DefaultType :
`=` Type
例如:
class Generic<T = string> {
private readonly list: T[] = []
add(t: T) {
this.list.push(t)
}
log() {
console.log(this.list)
}
}
const generic = new Generic()
generic.add('hello world') // Works
generic.add(4) // Error: Argument of type '4' is not assignable to parameter of type 'string'
generic.add({t: 33}) // Error: Argument of type '{ t: number; }' is not assignable to parameter of type 'string'
generic.log()
const genericAny = new Generic<any>()
// All of the following compile successfully
genericAny.add('hello world')
genericAny.add(4)
genericAny.add({t: 33})
genericAny.log()
見https://github.com/Microsoft/TypeScript/wiki/Roadmap#23-april-2017和https://github.com/Microsoft/TypeScript/pull/13487
這裏的目標是使通用型可選。我目前正在將JS轉換爲TS文件,如果這能起作用,那將會有很大幫助。 – RainingChain
請參閱https://github.com/Microsoft/TypeScript/issues/2175。目前不可能 – basarat