const a1: () => { a: string } = () => {
return {a: '', b: ''} // not erroring!?
}
const a2 = ():{ a: string } => {
return {a: '', b: ''} // is erroring as expected
}
const a3: () => { a: string } = () => {
return {b: ''} // is erroring as expected
}
这些2应该是相同的东西,但是以某种方式a2
出现打字错误。
我的代码以a1格式(定义了函数)完成,没有错误。如果不正确,我想知道该怎么办。
正如您在a3中所看到的,这是错误的。因此,它仍在检查类型,但不如a2中的准确。太奇怪了。
“打字稿”:“ ^ 3.7.2”
const a1_anon = () => {
return {a: '', b: ''} // not erroring!?
}
// inferred type of a1_anon is () => {a: string, b: string}
const a1: () => { a: string } = a1_anon
如果您不希望发生这种情况,则需要指定类型,这样就不会像这样推断出来:
const a1: () => { a: string } = (): {a: string} => { return {a: '', b: ''} // not erroring!? }
我知道它被指定了两次,但是由于您坚持要定义一个匿名函数,然后将其分配给该变量,因此没有其他方法。