Typescript扩展DataType交替无法编译

时间:2019-01-30 21:21:40

标签: typescript typescript-typings

在我的Towers(n-1,fr,spare,to)文件中,我具有以下扩展名:

extensions/date.ts

interface Date { addDays: (days: number) => Date } Date.prototype.addDays = function(days: number): Date { if (!days) return this; let date = this; date.setDate(date.getDate() + days); return date; }; 中,它首先被导入:

server.ts

它实际上可以编译,并且可以正常工作!但是有时候,当我进行更改并且使用import './extensions/date'; import * as dotenv from 'dotenv'; dotenv.config() ...rest imports 自动重新编译应用程序并使用nodemon运行该应用程序时,该应用程序将中断并且TS不再将node-ts识别为有效功能。

为了临时解决此问题,我曾经将进口商品重新定位到链中的较高位置,但现在我无处可攀。

错误是旧版2339:

  

类型“日期”上不存在属性“ addDays”。 (2339)

有人解决吗?也许可以解决?

1 个答案:

答案 0 :(得分:0)

您必须使用global文件中的Date接口覆盖date.ts

export {}

declare global {
  interface Date {
    addDays(days: number):  Date
  }
}

Date.prototype.addDays = function(days: number): Date {
  if (!days) return this;
  let date = this;
  date.setDate(date.getDate() + days);
  return date;
};

export {}可以避免File date.ts is not a module.错误

然后可以在主文件中import './date'并调用let fn = (arg: Date) => arg.addDays(1);,而不会出错

import * as x from './date';

let fn = (arg: Date) => arg.addDays(1);