Babel 7 + Typescript在函数方法中使用解构时出现意外令牌

时间:2018-10-31 04:08:57

标签: javascript typescript babeljs

我收到以下错误:

find_keyword()

针对:

SyntaxError: /Path/to/File.tsx: Unexpected token, expected ";" (73:76)

这不会:

interface Foo {
   bar: ({name: string, age: number}) => void;
}

interface Bar { name: string; age: number; } interface Foo { bar: (props: Bar) => void; }

.babelrc

我还需要其他哪些插件?

1 个答案:

答案 0 :(得分:0)

我无法在操场上重现该错误(但我猜它没有使用Babel)。但是,从Typescript docs

  

属性重命名

     

您还可以为属性指定其他名称:

let { a: newName1, b: newName2 } = o;
     

此处语法开始变得混乱。您可以将a: newName1读为“ a as newName1”。方向是从左到右,就像您写过一样:

let newName1 = o.a;
let newName2 = o.b;
     

令人困惑的是,此处的冒号没有指出类型。如果指定了类型,则在整个解构之后仍需要编写类型:

let { a, b }: { a: string, b: number } = o;

因此您必须将方法定义为

interface Foo {
  bar: ({name, age}: {name: string, age: number}) => void;
}