当前位置:  开发笔记 > 编程语言 > 正文

打字稿,声明和CommonJS

如何解决《打字稿,声明和CommonJS》经验,为你挑选了1个好方法。

创建声明文件时我很困惑(d.ts).

例如,我创建了一个NPM包"a"(一个CommonJS模块index.ts):

export interface IPoint {
    x: number;
    y: number;
}

export default function sub(one: IPoint, two: IPoint): IPoint {
    return {
        x: one.x - two.x,
        y: one.y - two.y
    };    
}

编译它并生成adts:

export interface IPoint {
    x: number;
    y: number;
}
export default function sub(one: IPoint, two: IPoint): IPoint;

据我所知,编译器无法为CommonJS生成有效的d.ts.必须使用实用程序作为dts-generator或手动换行:

declare module "a" 
{
    export interface IPoint {
        x: number;
        y: number;
    }
    export default function sub(one: IPoint, two: IPoint): IPoint;
}

好.现在我正在做包"b"(取决于"a"):

/// 

import sub from "a"
import { IPoint } from "a"
export { IPoint }

export default function distance(one: IPoint, two: IPoint): number {
    var s = sub(one, two);
    return Math.sqrt(s.x * s.x + s.y * s.y);
}

好的,它有效.现在想要一个依赖于"b"的包"c"(依此类推).

    如何在模块"b"中指定依赖关系(链接到"adts")?试图在"node_modules"中指定?或者将"adts"复制到"b"包中的"/ typings /"目录?然后将"adts"和"bdts"复制到"c"包中的"/ typings /"(依此类推)?

    "package.json"中的"typings"部分有什么意义?我写的是"b/package.json":

    "typings":"./ bdts"

并在编译"c"时得到错误:

Exported external package typings file 'node_modules/b/b.d.ts' is not a module.

    如何为CommonJS模块创建d.ts文件?所以不要手动写"声明模块","参考"等.

Bruno Griede.. 7

据我所知,编译器无法为CommonJS生成有效的d.ts.必须使用实用程序作为dts-generator或手动换行:

实际上没有(从1.6开始).

只需编译模块adeclaration标志传递给tsc.转换器将为您生成声明文件.

你是对的,这些文件不是外部定义文件,而是内部定义文件

然而

如果在模块a中,条目指向生成的文件,则模块b将能够自动查找和使用这些文件package.jsontypingsindex.d.ts

回顾一下:

模块a:

compîle与declaration国旗

更新typings条目以指向生成的.d.ts文件

模块b:

简单import * as moduleA from 'a'import {IPoint} from module 'a'

没有笨拙///或手工制作的打字



1> Bruno Griede..:

据我所知,编译器无法为CommonJS生成有效的d.ts.必须使用实用程序作为dts-generator或手动换行:

实际上没有(从1.6开始).

只需编译模块adeclaration标志传递给tsc.转换器将为您生成声明文件.

你是对的,这些文件不是外部定义文件,而是内部定义文件

然而

如果在模块a中,条目指向生成的文件,则模块b将能够自动查找和使用这些文件package.jsontypingsindex.d.ts

回顾一下:

模块a:

compîle与declaration国旗

更新typings条目以指向生成的.d.ts文件

模块b:

简单import * as moduleA from 'a'import {IPoint} from module 'a'

没有笨拙///或手工制作的打字

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有