【问题标题】:Write .d.ts fie for my own JavaScript file为我自己的 JavaScript 文件编写 .d.ts 文件
【发布时间】:2018-12-08 00:48:48
【问题描述】:

我有一个用 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.

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

【问题讨论】:

    标签: typescript definitelytyped


    【解决方案1】:

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

    是的。

    如果是这样,我怎样才能为 base.js 创建绝对文件

    只需base.d.ts:

    declare class Base {
    }
    

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

    在base.js旁边。

    【讨论】:

    • 看来我还需要将export = Base; 放入.d.ts 文件中。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-01-19
      • 2018-04-05
      • 2018-06-26
      • 1970-01-01
      • 2019-10-02
      • 2016-12-03
      • 1970-01-01
      • 1970-01-01
      • 2018-12-22
      相关资源
      最近更新 更多