typescript - 使用 typescript 和 babel-polyfill 会导致编译器错误

标签 typescript babeljs

我正在使用 babel-polyfill 和 typescript。

当我使用函数 string.includes() 时出现错误

Error TS2339: Property 'includes' does not exist on type 'string'

stack overflow也有类似的问题:error TS2339: Property 'endsWith' does not exist on type 'string'

答案是扩展自定义接口(interface)String

interface String {    
    endsWith(searchString: string, endPosition?: number): boolean;
};

我不太喜欢这个想法,因为这意味着我将不得不以这种方式修复每个 es6 polyfill 功能。

有没有办法告诉 typescript 他应该使用 es6 定义,但转译为 es5?

最佳答案

没有编译器选项可以打开它,但是您可以直接引用 lib.es6.d.ts 文件:

///<reference path="../path/to/node_modules/typescript/lib/lib.es6.d.ts" />

或者使用像 es6-shim 这样的 shim 库来获取类型,但不要包含 js 文件,因为 babel 会为你转译它。

tsd install es6-shim

关于typescript - 使用 typescript 和 babel-polyfill 会导致编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34987877/

相关文章:

javascript - Babel 安装 - src 不存在

angular - 有没有一种干净的方法可以在 TypeScript 中创建静态可继承的泛型构造函数?

javascript - 什么时候使用 JSX.Element vs ReactNode vs ReactElement?

javascript - 为什么某些未指定扩展名的 webpack/Babel ES6 导入会解析为 "undefined?"

reactjs - 使用 Jest 测试 React 应用程序 : Unexpected token

javascript - 如何删除babel添加的全局 "use strict"

javascript - 如何完全禁用 babel transform-regenerator

javascript - Plotly 直方图值的精度 %{x}

javascript - Angular 2 : attaching string with property binding

javascript - 编写功能测试,HTML5 视频标签