虽然undefined
和null
与void
兼容,但我认为反之亦然,这显然会侵蚀可选参数的效用,这似乎很奇怪:
function getThing(): string | void {}
function checkThing(val: string = 'abcd') {}
checkThing(getThing())
t.ts(3,12): error TS2345: Argument of type 'string | void' is not assignable to parameter of type 'string'.
Type 'void' is not assignable to type 'string'.
指定一个没有默认值的可选arg并不会更改错误,但是指定一个带void
的联合(并生成默认初始化参数的那个)。坚持在所有可选参数上声明void
并集似乎相当繁重,可能在任何时间点都是void函数结果的目标。您还可以使用void
参数做什么?
答案 0 :(得分:0)
您的代码示例:
function getThing(): string | void {}
function checkThing(val: string = 'abcd') {}
checkThing(getThing())
t.ts(3,12): error TS2345: Argument of type 'string | void' is not assignable to parameter of type 'string'.
Type 'void' is not assignable to type 'string'.
专注于错误Type 'void' is not assignable to type 'string'
。 checkThing
需要string
,并且会给出您所说的void
。因此错误。
坚持在所有可选参数上声明void联合似乎相当繁重,可能在任何时间点都是void函数结果的目标。你还会用void参数做什么?
这是由TypeScript团队设计的。您有权获得不同的意见,我可以同情您的愿望