为我自己的JavaScript文件写.d.ts fie

时间:2017-12-18 03:44:48

标签: typescript definitelytyped

我有一个用JavaScript编写的应用程序,我想使用TypeScript作为新功能。我有一个用JavaScript定义的基类,例如。

// base.js

module.exports = function BaseClass () {
    // ... ...
};

在我的TypeScript中,我需要像这样创建一个类。

// sub.ts
import Base from "./base.js";
class Sub extends Base {
    // ... ...
}

但我发现sub.ts

有错误
Type "Base" is not a constructor function type.

我想知道为什么会这样?这是因为我的.d.ts没有base.js个文件吗?如果是这样,我如何为base.js创建明确的文件以及我需要放置此文件的位置?

2 个答案:

答案 0 :(得分:3)

  

这是因为我的base.js没有.d.ts文件吗?

  

如果是这样,我该如何为base.js创建明确的文件

只需base.d.ts

declare class Base {
}
  

我需要把这个文件放在哪里?

base.js

旁边

答案 1 :(得分:0)

基于@basarat的答案的完整示例:

// data.js
var data = {
  "values": [
    {
      "value": "a",
    },
    {
      "value": "b",
    }
  ],
  "year" : 2018
  }

export { data }


export declare class data {
    static values : any[];
    static year   : number
}


// app.ts
import { data } from './data.js';

// data.values.filter() // autocompletion for Array methods should appear in the IDE
// data.year.toFixed(1) // // autocompletion for Number methods should appear in the IDE

在Angular 6应用程序中使用以下代码进行了测试:TypeScript V2.9.2。