如何在赋值而不是声明时推断变量类型?

时间:2018-12-04 22:37:56

标签: javascript typescript type-inference

假设我有这个声明:

let spyObjs;

spyObjs的类型将为any。现在,如果我有此作业:

let spyObjs = {fruit: 'apple', os: 'windows'};

spyObjs的类型将为{fruit: string, os: string},因为可以推断出该类型。我想要的是这个

let spyObjs;
spyObjs = {fruit: 'apple', os: 'windows'};

,以及spyObjs的类型为{fruit: string, os: string}。不幸的是,类型仍然是any

如何使用TS 3.0做到这一点?

干杯!

编辑

好的,很抱歉,示例不明确。该代码看起来更像:

let spyObjs;

let someFunction = () => {
    spyObjs = { fruit: 'apple', os: 'windows' };
}

let someOtherFunction = () => {
    // user spyObjs here also
}

someFunction()
someOtherFunction()

在这种情况下如何推断类型?

1 个答案:

答案 0 :(得分:0)

首先,您不能声明两个具有相同名称的变量。

让spyObjs; let spyObjs = {fruit:'apple',os:'windows'};

Ts错误:无法重新声明块作用域变量“ spyObjs”

第二,当你声明这个 let spyObjs = {水果:“苹果”,操作系统:“ windows”}; 它的类型不再是“ any”。它变为“ {水果:'苹果',操作系统:'Windows'}”