gpt4 book ai didi

typescript - 如何在 TypeScript 中使用可选链?

转载 作者:行者123 更新时间:2023-12-03 14:35:23 24 4
gpt4 key购买 nike

看起来像可选链接 has landed . Here's an example

我想不通的是如何让 TS 正确编译它。我的项目中没有出现任何语法错误,但是:

let imageFileId = (await db.query(sql`select id from image_files where sha256=${sha256}`))[0]?.id;

正在输出为:
let imageFileId = (await db.query(mysql3_1.sql `select id from image_files where sha256=${sha256}`))[0]?.id;

在我们获得 Node.js 的原生支持之前,它不会运行。

这是我的 tsconfig:
{
"compilerOptions": {
"strict": true,
"importHelpers": false,
"inlineSources": true,
"noEmitOnError": true,
"pretty": true,
"module": "commonjs",
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": false,
"removeComments": false,
"preserveConstEnums": false,
"sourceMap": true,
"lib": ["es2018"],
"skipLibCheck": false,
"outDir": "dist",
"target": "esnext",
"declaration": false,
"resolveJsonModule": true,
"esModuleInterop": false,
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"baseUrl": ".",
"paths": {
"*": ["src/*"]
},
"noEmit": false
},
"files": [
"src/index"
],
"include": [
"src/**/*.d.ts"
]
}

我需要启用其他选项来编译 ?.运算符(operator)?

请注意,我没有使用 Babel,也不想将其带入图片中。

最佳答案

问题是您的目标是 esnext这将告诉编译器按原样输出所有语言功能,无需任何转译。将语言设置为 es2020(或以下)和 ?.??将被转换为兼容代码:

(async function () {
let imageFileId = (await db.query(sql`select id from image_files where sha256=${sha256}`))[0]?.id;
})()

Playground Link

没有细粒度控制哪些语言特性被转译,哪些不需要你不幸地选择一个整体,

关于typescript - 如何在 TypeScript 中使用可选链?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58725711/

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