为什么在第一个示例中,Typescript 推断出字符串类型
string
,而在第二个示例中它却能推断出精确的类型联合 'good' | 'bad'
?const alwaysSomething = () => 'something' // inferred returned type: string
const moreComplicated = (mark: number) => mark >= 10 ? 'good' : 'bad' // inferred returned type: 'good' | 'bad'
这里是一个在线代码编辑器。如果你将鼠标悬停在alwaysSomething
上,它会显示其类型为() => string
,但如果你将鼠标悬停在moreComplicated
上,它会显示其类型为(mark: number) => "good" | "bad"
。