How to get optional chaining working in TypeScript?

前端 未结 2 1242
旧时难觅i
旧时难觅i 2021-02-08 11:47

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 pr

2条回答
  •  梦谈多话
    2021-02-08 12:16

    Well, I didn't want to use Babel because then I'd have to figure out how to replace ts-node. There's a bunch of outdated docs out there referring to old Babel packages, but these instructions should work as of Nov 2019:

    Add a .babelrc file:

    {
        "presets": [
            ["@babel/preset-env",{"targets": {"node": "current"}}],
            "@babel/preset-typescript"
        ],
        "plugins": [
            "@babel/plugin-syntax-bigint"
        ]
    }
    

    Add these deps:

      "devDependencies": {
        "@babel/cli": "^7.7.0",
        "@babel/core": "^7.7.0",
        "@babel/node": "^7.7.0",
        "@babel/plugin-syntax-bigint": "^7.4.4",
        "@babel/preset-env": "^7.7.1",
        "@babel/preset-typescript": "^7.7.0",
        "@types/node": "^12.7.5",
        "typescript": "^3.7.2"
      }
    

    Execute your code with:

    node_modules/.bin/babel-node --extensions ".ts" src/index.ts
    

    The --extensions ".ts" is very important, even though you're explicitly trying to execute a .ts file, it won't transpile it w/out that.

    I like to use GNU Make instead of package.json scripts:

    MAKEFLAGS += --no-builtin-rules
    .SUFFIXES:
    NM := node_modules/.bin
    .PHONY: build start dev clean test publish
    
    ## commands
    ########################################
    
    __default:
        $(error Please specify a target)
    
    build: build-types build-js dist/package.json
    
    build-types: node_modules/.yarn-integrity
        $(NM)/tsc --emitDeclarationOnly
    
    build-js: node_modules/.yarn-integrity
        $(NM)/babel src --out-dir dist --extensions ".ts" --source-maps inline
    
    run: node_modules/.yarn-integrity
        $(NM)/babel-node --extensions ".ts" src/index.ts
    
    check: node_modules/.yarn-integrity
        $(NM)/tsc --noEmit
    
    dist:
        mkdir -p $@
    
    clean:
        rm -rf node_modules dist yarn-error.log
    
    dist/package.json: package.json | dist
        jq 'del(.private, .devDependencies, .scripts, .eslintConfig, .babel)' $< > $@
    
    ## files
    ########################################
    
    node_modules/.yarn-integrity: yarn.lock
        @yarn install --frozen-lockfile --production=false --check-files
        @touch -mr $@ $<
    
    yarn.lock: package.json
        @yarn check --integrity
        @touch -mr $@ $<
    

    Or just copy from Microsoft's TypeScript Babel Starter.

提交回复
热议问题