在TypeScript中,可选(?)何时表示不可定义或可为空?

dw1jzc5e  于 2023-03-09  发布在  TypeScript
关注(0)|答案(1)|浏览(120)

可选符号(?)描述的类型是any | undefinedany | null还是两者之一?在下面的代码中,似乎两者都是,但我无法找到是否是正式的情况:

type MyType = {
  prop1?: string;
  prop2: string | null;
}

const something: MyType = { prop2: null };
something.prop1?.toString();
something.prop2?.toString();

可选真的是指any | null | undefined吗?我所说的any一般指任何类型。

eivgtgni

eivgtgni1#

?在typescript中有多种含义(在javascript中也有)。在typescript类型中,?表示属性可能未定义。null在此方面不起作用。下面一行是类型中?的示例:

type MyType = {
  prop1?: string; // similar to prop1: string | undefined
}

在javascript代码中(因此typescript代码继承了这个语法),?.optional chaining operator,类似于通过.访问一个属性,除了如果值为null或未定义,它会缩短计算过程,注意它从来不是一个单独的?,它总是与.结合在一起,并且总是在代码中而不是在类型中。
下面是?.的代码示例:

something.prop1?.toString();

相关问题