Looks like optional chaining has landed. Here's an example
What I can't figure out is how to get TS to compile it properly. I'm not getting any syntax errors in my project, but this:
let imageFileId = (await db.query(sql`select id from image_files where sha256=${sha256}`))[0]?.id;
Is being output as:
let imageFileId = (await db.query(mysql3_1.sql `select id from image_files where sha256=${sha256}`))[0]?.id;
Which won't run until we get native support in Node.
Here's my 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"
]
}
Is there some other option I need to enable to compile the ?.
operator?
Please note I'm not using Babel and I don't want to bring it into the picture.