面试题答案
一键面试newUser
的类型推断过程:- 首先,
createUser
函数被定义为接受两个参数name
(类型为string
)和age
(类型为number
),并返回一个User
类型的值。User
接口定义了具有name
(string
类型)和age
(number
类型)属性的对象。 - 当调用
createUser('Alice', 30)
时,TypeScript根据createUser
函数的返回值类型定义User
,推断出newUser
的类型为User
,即一个具有name
(string
类型)和age
(number
类型)属性的对象。
- 首先,
- 如果
createUser
函数的返回值类型定义被省略:- 当省略
createUser
函数的返回值类型定义时,TypeScript会根据函数内部的返回值进行类型推断。 - 在函数内部,返回的是
{ name, age }
,TypeScript会推断出返回值的类型为{ name: string; age: number; }
。 - 所以
newUser
的类型仍然会被推断为{ name: string; age: number; }
,本质上和原来User
接口定义的类型是一样的。这是因为TypeScript能够根据函数返回的对象字面量的结构准确推断出其类型,即使没有显式指定返回值类型。
- 当省略