gpt4 book ai didi

typescript 、声明和 CommonJS

转载 作者:搜寻专家 更新时间:2023-10-30 22:05:32 28 4
gpt4 key购买 nike

我在创建声明文件 (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
};
}

编译生成a.d.ts:

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

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

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

好的。现在我正在做包“b”(依赖于“a”):

/// <reference path="node_modules/a/a.d.ts" />

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);
}

好的,它起作用了。现在 A 想要一个依赖于“b”(等等)的包“c”。

  1. 如何在模块“b”(链接到“a.d.ts”)中指定依赖?试图在“node_modules”中指定?或者将“a.d.ts”复制到“b”包中的“/typings/”目录?然后将“a.d.ts”和“b.d.ts”复制到“c”包中的“/typings/”(等等)?

  2. “package.json”中的“typings”部分有何意义?我在“b/package.json”中写:

    “打字”:“./b.d.ts”

编译“c”时出现错误:

Exported external package typings file 'node_modules/b/b.d.ts' is not a module.
  1. 如何为 CommonJS 模块创建 d.ts 文件?这样就不用手动写“declare module”、“reference”等。

最佳答案

As I understand the compiler can not generate valid d.ts for CommonJS. Must use utilities as dts-generator or to wrap manually:

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

简单编译模块a通过 declaration标记为 tsc .转译器将为您生成声明文件。

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

但是

模块 b如果在 package.json 中,将能够自动查找和使用这些文件模块 a,typings生成的入口点 index.d.ts文件

回顾一下:

模块一:

  • declaration 相符旗帜
  • 更新typings入口指向生成的 .d.ts文件

模块 b:

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

没有笨拙///<reference=或手工打字

关于 typescript 、声明和 CommonJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34272128/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com