如果在typescript中未定义,如何设置变量?

时间:2017-11-16 11:46:29

标签: typescript

我尝试在未定义时设置变量值但是,我在尝试使用vanilla javascript方法时遇到错误。

  

块范围变量' x'在宣言之前使用。

使用typescript设置未定义变量的最佳方法是什么?

let x = (typeof x === 'undefined') ? def_val : x;

3 个答案:

答案 0 :(得分:2)

TypeScript可以告诉x肯定没有定义,因为它是一个块范围的变量,你可以看到整个块。

如果你比编译器更清楚,你可以将这些行分开:

const def_val = 'default';

let x: string;
x = (typeof x === 'undefined') ? def_val : x;

但您可能想要考虑在您的情况下块块范围变量可能是如何定义的(可能您的代码并不像您的问题中的示例那么简单)。

常见用例更像是:

const def_val = 'default';

function work(y: string) {
    let x = (typeof y === 'undefined') ? def_val : y;
}

您还可以添加更严格的编译器选项,以便在很多情况下不太可能定义值。

速记

还有一种可能有用的简写假结合:

const def_val = 'default';

function work(y: string) {
    let x = y || def_val;
}

这会将undefinednull''替换为默认值。

答案 1 :(得分:1)

还有一个使用 Nullish 合并运算符的速记:

const def_val = 'default';

function work(y: string) {
    let x = y ?? def_val;
}

这将仅用默认值替换 undefinednull

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator

答案 2 :(得分:1)

逻辑空赋值 (x ??= y) 运算符仅在 x 为空(空或未定义)时才赋值。

x ??= default_value