【发布时间】:2016-04-20 23:57:53
【问题描述】:
这两个 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): error TS2345: Argument of type '{ color1: string; }' 不可分配给“SquareConfig”类型的参数。 对象字面量只能指定已知属性,而“SquareConfig”类型中不存在“color1”。
【问题讨论】:
-
将
color1重命名为color?