[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
})
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:
- Remove the
color
property from the object - Add a
color: string
to the function argument type - Create a variable to hold this value, and then pass the variable into the
printCar
function