我似乎无法弄清楚如何在没有作业的情况下归还对象。
示例:
interface Foo{
a: string;
}
const arr = ['a','b','c'];
arr.map(item => {
return { a: item }; //I want type safety on Foo here
});
// Don't want to have to do this
arr.map(item => {
let ret: Foo = { a: item }; //first assign
return ret;
});
我希望像return :Foo { a: item };
这样的东西可以工作,但事实并非如此。我不想使用return { a: item } as Foo;
因为它不是类型安全的。
答案 0 :(得分:3)
您可以注释箭头函数的返回类型:
arr.map((item): Foo => {
return { a: item };
});
类似于
arr.map(function f(item): Foo {
return { a: item };
});
使用常规函数表示法,或者更明显:
function mapper(item: string): Foo {
return {a: item};
}
arr.map(mapper);
嗯,除了两个箭头函数外,item
的类型从上下文推断为string
。在独立功能中,您需要明确指定string
。但是在所有示例中,返回类型都指定为Foo
并且类型安全。
这有帮助吗?
答案 1 :(得分:2)