将TypeDefinitions导出为自定义模块

时间:2019-03-05 09:32:20

标签: typescript

我目前正在努力使用类型定义,并将其从我们的项目中导出。

当前需求: 我不会使用其他模块名称导出类型定义。如果我用手写的话就可以了

//src/@types/custom/foo/module.d.ts
declare module "@custom/foo" {
    class Foo {
        name: string;
        constructor(name: string);
    }
    export = Foo
}


//consumer.ts
import Foo from "@custom/foo"
const test = new Foo("Foo is my Name")
test.name //gives me autocomplete

但是当我想使用tsc生成的类型定义时,我得到以下输出

//src/foo.ts
export default class Foo {
    public name: string
    constructor(name : string) {
        //do stuff here
        this.name = name
    }
}

//src/@types/@myCustom/foo/foo.d.ts
export default class Foo {
    name: string;
    constructor(name: string);
}

,然后将module.d.ts修改为

//src/@types/custom/foo/module.d.ts
import Foo from "./foo"
declare module "@custom/foo" {
    export = Foo
}

Typescript无法在我的使用者中解析它。

//consumer.ts
import Foo from "@custom/foo" //Cannot find module "@custom/foo". ts(2307)
const test = new Foo("Foo is my Name")  
console.log(test.name)

那么为什么tsc生成的类型定义不是有效的声明,或者还有另一种方法可以实现我的目标呢?

这是一个包含我的测试的github存储库: https://github.com/42tg/custom-definition-module

0 个答案:

没有答案