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

Write .d.ts fie for my own JavaScript file

我有一个用 JavaScript 编写的应用程序,我想将 TypeScript 用于新功能。例如,我在 JavaScript 中定义了一个基数 class。

// base.js

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

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

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

但是我发现sub.ts说的有误

Type "Base" is not a constructor function type.

我想知道为什么会这样?这是因为我的 base.js 没有 .d.ts 文件吗?如果是这样,我如何为 base.js 创建 definitely 文件以及我需要把这个文件放在哪里?

Is this because there's no .d.ts file for my base.js?

年。

If so, how can I create the definitely file for base.js

简化base.d.ts

declare class Base {
}

and where I need to put this file?

base.js 旁边。

一个完整的例子,基于@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。