现在有个案例
interface SquareConfig {
color?: string,
width?: number
}
function createSquare(config: SquareConfig): Square {
let newSquare = {
color: "red",
width: 10,
}
if (config.color) {
newSquare.color = config.color
}
if (config.width) {
newSquare.width = config.width
}
return newSquare
}
let square1 = { width: 1 }
let square2 = { width: 1, name: "square" }
let square3 = { name: "square" }
createSquare(square1)
createSquare(square2)
createSquare(square3)
函数createSquare传入 square1、square2都没问题,传入square3就有报错信息
Type '{ name: string; }' has no properties in common with type 'SquareConfig',为什么
width和color不是可选吗,怎么只传入name属性就有问题呢,如果传入的是{}也没有问题。求教!!!
你的接口中并没有 name字段,你需要使用任意属性的方式
至于
let square2 = { width: 1, name: "square" }
没有报错,这里引用文档中的解释: