我已经使用tsc编译器的--declaration参数从我的 typescript 项目中创建了一个定义文件(d.ts)。
但是,当我尝试在npm package.json 上发布属性为类型为的包时,此生成的定义文件显然不起作用。我创建了另一个项目对其进行测试。
它提示消息:“导出的外部软件包文件类型文件'... d.ts'不是一个模块。请与软件包作者联系以更新软件包定义”。
这是我的源文件:
MyInterface.ts
export interface MyInterface
{
MyProperty: string;
}
MyClass.ts
import {MyInterface} from './MyInterface';
export class MyClass implements MyInterface
{
get MyProperty(): string
{
return "MyString";
}
}
MyInheritedClass.ts
import {MyClass} from './MyClass';
export class MyInheritedClass extends MyClass
{
public MyMethod(): number
{
return 1;
}
}
tsc命令是这样的:
tsc MyClass.ts MyInterface.ts MyInheritedClass.ts --declaration -t es5 -outFile "mydefinition.js" --module "system"
这是生成的定义:
mydefinition.d.ts
declare module "MyInterface" {
export interface MyInterface {
MyProperty: string;
}
}
declare module "MyClass" {
import { MyInterface } from "MyInterface";
export class MyClass implements MyInterface {
MyProperty: string;
}
}
declare module "MyInheritedClass" {
import { MyClass } from "MyClass";
export class MyInheritedClass extends MyClass {
MyMethod(): number;
}
}
我还有另一件事要做吗,或者生成的定义据说在package.json类型中不起作用?
更新以获取更多详细信息:
该方案是我有2个项目:
与2个项目的链接以及该场景的另一个链接:
https://github.com/jvitor83/typings-packagejson
我认为问题出在第一个链接上,“您的定义文件应作为外部模块编写”。
但是我想知道是否有一种方法可以生成生成的定义,并将其放在package.json的typesings属性中。
重现该问题:
最佳答案
1-添加一个导出所有其他文件的文件“index.ts”。
export * from "./MyInterface"
export * from "./MyClass"
export * from "./MyInheritedClass"
2-在构建过程中添加文件的两个编译/转译(一个用于声明,另一个用于单个js文件[在tsc编译器中没有属性))
let tsConfigDeclaration = gulp_typescript({module: 'system', target: 'es5', declaration: true, removeComments: true });
let tsConfigOneFile = gulp_typescript({module: 'system', target: 'es5', declaration: true, removeComments: true, out: 'typings-packagejson.js'});
构建过程中的更多信息:https://github.com/jvitor83/typings-packagejson/blob/master/gulpfile.js
和索引文件:https://github.com/jvitor83/typings-packagejson/blob/master/app/src/typings-packagejson.ts
关于node.js - TypeScript生成的定义文件(.d.ts)无法与package.json键入配合使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37091321/