[Typescript] Excess property checking

TypeScript helps us catch a particular type of problem around the use of object literals. Let’s look at the situation where the error arises:

// @errors: 2345
function printCar(car: {
  make: string
  model: string
  year: number
  chargeVoltage?: number
}) {
  // implementation removed for simplicity
}

printCar({
  make: "Tesla",
  model: "Model 3",
  year: 2020,
  chargeVoltage: 220,
  color: "RED", // <0------ EXTRA PROPERTY
})

https://www.typescriptlang.org/play?#code/PTAEAEFMCdoe2gZwFygEwGYAsBWAUAGYCuAdgMYAuAlnCaAA7RUkUDCAhtABRmeoDeeUKAC27ANaRUiCkxIBzIaLgATSABtps5ouEBPSH1AkiIgEYwlZABad5kAGpx1FdvYD8qE+csBfAJSggsIgoFQi9OqQIpAs7NS0oNDRcABukCqgBAigiOGRVGRUFHp4vnh4jMxsnFzBohJSoABEACqQiOrszQA0SiKqGqjNALKD6qAYvUoGRmgADAt9wjZ2js6u9qhoS1bOCMMASgCiACK9oKEAPPMAtPcPoMcAGq2HAIKgAAqHAPJfx0OrQAmmV-EA

The important part of this error message is:

Object literal may only specify known properties, and ‘color’ does not exist in type <the type the function expects>

In this situation, within the body of the printCar function, we cannot access the color property since it’s not part of the argument type. Thus, we’re defining a property on this object, that we have no hope of safely accessing later on!

 
Try fixing this three ways in the TypeScript playground:
  1. Remove the color property from the object
  2. Add a color: string to the function argument type
  3. Create a variable to hold this value, and then pass the variable into the printCar function

 

posted @   Zhentiw  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2021-07-25 [SAA + SAP] 09. DynamoDB
2018-07-25 [Vue @Component] Write Vue Functional Components Inline
2017-07-25 [Nuxt] Display Vuex Data Differently in Each Page of Nuxt and Vue.js
2017-07-25 [Nuxt] Update State with Vuex Actions in Nuxt.js
2017-07-25 [Nuxt] Use Vuex Actions to Delete Data from APIs in Nuxt and Vue.js
2017-07-25 [Nuxt] Build a Vue.js Form then use Vuex Actions to Post to an API in Nuxt
2017-07-25 [Nuxt] Build a Navigation Component in Vue.js and Use in a Nuxt Layout
点击右上角即可分享
微信分享提示