interface SquareConfig {
color?: string;
width?: number;
}
function createSquare(config: SquareConfig): { color: string; area: number } {
// ...
}
let mySquare = createSquare({ colour: "red", width: 100 });
ts编译这段代码时会抛错,但是使用如下两种方式就不会抛错,这是什么原理?官网的解释让我无法理解,只会让我觉得ts语法好随便...
let mySquare = createSquare({ width: 100, opacity: 0.5 } as SquareConfig);
或者
let squareOptions = { colour: "red", width: 100 };
let mySquare = createSquare(squareOptions);
这样都不会报错,使用断言的时候(as/<>)是会按照什么规则比照接口吗?然后将对象字面量复制给变量,我知道这是对象的一个引用指针,但是这样为什么就不会检测额外的属性了呢?官网地址
繁花如伊
相关分类