这两段TypeScript代码有什么区别?(我使用的是TypeScript 1.7.5版本)
interface SquareConfig {
color?: string;
width?: number;
}
function createSquare(config: SquareConfig): {color: string; area: number} {
var newSquare = {color: "white", area: 100};
if (config.color) {
newSquare.color = config.color;
}
if (config.width) {
newSquare.area = config.width * config.width;
}
return newSquare;
}
var obj = {color1: "black"};
var mySquare = createSquare(obj);
何时编译不会出错,但下面的代码在生产环境中会出错。
interface SquareConfig {
color?: string;
width?: number;
}
function createSquare(config: SquareConfig): {color: string; area: number} {
var newSquare = {color: "white", area: 100};
if (config.color) {
newSquare.color = config.color;
}
if (config.width) {
newSquare.area = config.width * config.width;
}
return newSquare;
}
var mySquare = createSquare({color1: "black"});
错误:
test.ts(18,30): 错误 TS2345: 类型为 '{ color1: string; }' 的参数不能赋值给类型 'SquareConfig' 的参数。 对象字面量只能指定已知属性,而 'color1' 不在类型 'SquareConfig' 中。
color1
重命名为color
? - Sebastian Brosch