ionic2 typescript 编译错误,用于将方法添加到字符串或数字

Posted

技术标签:

【中文标题】ionic2 typescript 编译错误,用于将方法添加到字符串或数字【英文标题】:ionic2 typescript compilation error for adding a method to String or Number 【发布时间】:2016-09-14 15:56:27 【问题描述】:

在我的 Ionic2 项目中,我正在尝试向 Number 添加一个新方法,如下面的代码所示。

interface StringConstructor 
  bar(msg: string): void;


String.bar = function(msg: string) 
  alert("Example of static extension: " + msg);


String.bar("Hello World");


interface NumberConstructor 
  toRad(): number;


Number.toRad = function()  return this * (Math.PI / 180); ; 

export function gpsDist() 
  

当我进行离子构建时,它给了我以下错误:

TypeScript 错误: /Users/cju/Projects/Bus2-App/app/util/mathUtil.ts(7,8):错误 TS2339: “StringConstructor”类型上不存在属性“bar”。

TypeScript 错误:/Users/cju/Projects/Bus2-App/app/util/mathUtil.ts(11,8):错误 TS2339:“StringConstructor”类型上不存在属性“bar”。

TypeScript 错误: /Users/cju/Projects/Bus2-App/app/util/mathUtil.ts(18,8):错误 TS2339: 类型“NumberConstructor”上不存在属性“toRad”。

但是,相同的文件在 ionic 之外编译正常。如果我用 tsc 编译它,我不会收到任何错误。所有代码都在一个文件中。

【问题讨论】:

我尝试通过执行“node tsc.js myfile.ts”和“node typescript.js myfile.ts”在“ionic build”命令之外编译文件,两者都编译没有错误。 tsc.js 和 typescript.js 来自 ionic-gulp-browserify-typescript/node_modules/tsify/node_modules/typescript/lib。 【参考方案1】:

Angular 负责 ts 编译,您可以在应用程序根目录中的文件 tsconfig.json 中编辑 typescript 编译器选项。但我不认为你想搞砸这个。

尝试使用非静态方式扩展功能,您可以在此处找到:https://***.com/a/13897813/1016128

【讨论】:

我这样做了。接口编号 toRad(): 编号; Number.prototype.toRad = function() return this * 2; ;它仍然给我错误“错误 TS2339:‘数字’类型上不存在属性‘toRad’。”但它仍然运行并给了我正确的结果。

以上是关于ionic2 typescript 编译错误,用于将方法添加到字符串或数字的主要内容,如果未能解决你的问题,请参考以下文章

Ionic2 Angular2 Typescript 模块 - 类型提示问题

更新到 ionic-native 2.5.1 后的 ionic 2 Typescript 错误 TS1005

typescript 解决方案“错误:gulp-typescript:项目不能同时用于两个编译*。使用createP创建多个项目

Ionic2 Typescript Twilio

typescript AngularJS2 / Ionic2:与imgcache.js一起使用的ImageCache指令

在 ionic2 中添加自定义用户定义的 Cordova 插件,但打字稿不起作用