【发布时间】:2017-12-03 13:53:39
【问题描述】:
我在这个打字稿代码的实现中遇到了错误。我在这里将一种类型映射到另一种类型。但是 vscode 显示错误,即在分配之前使用了变量“test”。有人可以帮忙吗?
interface A {
name: string;
age: string;
sex: string;
}
interface B {
name: any;
age: string;
sex: string;
}
const modifyData = (g : B) :A => {
let test: A;
test.name = g.name['ru'];
test.age = g.age;
test.sex = g.sex;
return test as A;
};
const g = [{
"name": {
"en": "George",
"ru": "Gregor"
},
"age": "21",
"sex": "Male"
},
{
"name": {
"en": "David",
"ru": "Diva"
},,
"age": "31",
"sex": "Male"
}];
const data = g.map(modifyData);
console.log(data);
【问题讨论】:
-
let test: A定义了test,但没有将其分配给任何东西。因此,在设置其name属性时会出现运行时错误。编译器试图告诉你先分配它。 -
如果我想这样做,请测试:A = { name: '', age: '', sex: '', };那么它工作正常吗?
-
试试看...好像你想要的是
let test:A = { name: g.name['ru'], age: g.age, sex: g.sex }; -
效果很好。谢谢迈克。我是 TS 的新手。 :)
标签: typescript typescript-typings typescript2.0