gpt4 book ai didi

typescript :赋值表达式中类型注释后的问号(可空类型?)

转载 作者:搜寻专家 更新时间:2023-10-30 21:33:18 26 4
gpt4 key购买 nike

今天我发现我可以做到:

let foo: string? // foo now has type string | null

那是什么?我在 TS 手册中找不到它的引用资料。有人可以指出吗?

另一个(虽然同样重要)问题是:为什么它会产生 string | null 而不是 string |未定义?因为后者会更有用,因为已声明(但未初始化)的变量通常具有 undefined 类型。这更加令人困惑,因为问题登录界面给我们 ... |未定义类型。

附言我的TS版本是3.4.3

更新。看来这是一个错误。仅在后跟 if 语句时有效:

let foo: string?
if(1) {

}

然后,再一次,好的,这是一个错误,但为什么它会产生 string |空?

最佳答案

看起来这是为了支持某些版本的 JSDoc使用 TypeScript to check JavaScript files 的可空类型(即 | null)表示法.如果您开始在 TypeScript 文件中使用 JSDoc 语法,我希望看到一个错误...这就是我在 the Playground 中看到的内容:

let foo: string?; // error!
// JSDoc types can only be used inside documentation comments.

如果您在 TypeScript 文件中使用该表示法并且没有看到错误,我认为这是一个错误(或者您可能设置了一些有趣的编译器选项)。


我说“某些版本”是因为 official JSDoc way将类型注释为可空的方法是使用 ? 作为 prefix 运算符,而不是作为 postfix 运算符。也就是说,JSDoc 说要使用 @type {?string} 而不是 @type {string?}

显然,Google 的 Closure Compiler非正式supports postfix-? ,我猜 TypeScript does too .但这不符合官方 JSDoc 标准,甚至可能以 being removed from TS 结束。 .因此,即使您在代码中使用 JSDoc 类型的注释,我也不会依赖它。

好的,希望对你有帮助。祝你好运!

关于 typescript :赋值表达式中类型注释后的问号(可空类型?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56125477/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com