TypeScript同名对象参数识别特性名称及是否属类型推断咨询
问题解答
特性名称
这个特性叫做上下文类型(Contextual Typing),具体是针对对象字面量的上下文类型推断场景:当你直接把对象字面量作为函数实参传入时,TypeScript会依据函数定义的参数签名(即当前的上下文环境)来推断这个对象的类型,匹配参数要求的属性结构;如果对象的属性名和参数类型定义的属性不匹配,就会触发类型检查错误。
是否属于类型推断
是的,它属于类型推断的一种特殊分支——上下文驱动的类型推断。常规类型推断是从表达式自身推导类型,而上下文类型推断则是反向通过代码所处的上下文(比如这里的函数参数类型)来确定表达式的类型,本质上是TypeScript类型系统利用上下文信息辅助类型推断的能力。
示例代码
// 定义带参数类型的函数 function printUser(user: { name: string; age: number }) { console.log(`${user.name} is ${user.age} years old`); } // 符合参数属性名的对象字面量,通过类型检查 printUser({ name: "Charlie", age: 28 }); // 属性名不匹配时,TypeScript报错 printUser({ fullName: "David", age: 32 }); // 错误提示:对象字面量只能指定已知属性,'fullName'不在类型'{ name: string; age: number; }'中
内容的提问来源于stack exchange,提问作者Now.Zero
相关产品推荐
相关产品推荐

