我有以下功能
function complete<T>(result?: T): void {
}
我想为result
添加一个默认值:
function complete(result = null): void {
}
在这种情况下,T
被推断为null
。
complete() // result: T = null
或
complete(valueOfSomeType) // result: T = SomeType
我试过了
function complete<T = null>(id: string, result: T = null): void {
}
但我得到了错误
Type 'null' is not assignable to type 'T'.
'T' could be instantiated with an arbitrary type which could be unrelated to 'null'.ts(2322)
这可以说是
complete<SomeType>()
我该怎么补救呢?
2条答案
按热度按时间mrwjdhj31#
也许
function complete<T>(result: T = null as T): void { }
可以解决编译错误。r1wp621o2#
你可以重载你的函数来接受一个具有提供的泛型类型的参数,或者没有参数和默认值
null
:Playground