Typescript不够聪明,无法从后来添加属性的空对象推断出来吗?

时间:2018-01-14 03:16:19

标签: typescript

char myArray[100][100] = {[0 ... 99] = {1, 2, 3}}

鉴于上面的代码,即使在返回之前添加了属性,我也会收到上面针对interface ITest { objKey: { propA: string; propB: string; }; } const func: ITest = () => { // Error: Property 'objKey' is missing in type '() => {}' const arr = ["objKey"]; return arr.reduce((obj, name) => { obj[name] = { propA: "str1", propB: "str2" }; return obj; }, {}); }; 所述的错误。

打字稿是不够聪明,不能推断它们已被添加?有没有办法让它不抛出错误,但确保返回仍然强制执行接口?

1 个答案:

答案 0 :(得分:1)

您的函数输入不正确,您可以将参数设置为可选。 如果可以的话,最好使用一个类,如果所有其他方法都失败,则返回空类。

interface ITest {
    objKey?: {
        propA: string;
        propB: string;
    };
}

const func = ():ITest => {
    const arr = ["objKey"];

    return arr.reduce((obj, name) => { 
        obj[name] = {
            propA: "str1",
            propB: "str2"
        };

        return obj;
    }, {});
};