gpt4 book ai didi

typescript - 找不到命名空间错误

转载 作者:搜寻专家 更新时间:2023-10-30 20:41:13 27 4
gpt4 key购买 nike

我有以下设置:

// enums.ts
export enum DocumentType {
Email = 0,
Unknown = 1
}

-

// remote.ts
/// <reference path="./remote.d.ts" />
import enums = require('./enums');

class Remote implements test.IRemote {
public docType: enums.DocumentType;

constructor() {
this.docType = enums.DocumentType.Unknown;
}
}

export = Remote;

-

// remote.d.ts
import * as enums from './enums';


declare module test {
export interface IRemote {
docType: enums.DocumentType;
}
}

但是当我对此运行 tsc 时,我从 remotes.ts 得到 Cannot find namespace 'test'。我错过了什么?

其他可能有用的信息:我最近从 Typescript 1.5 升级到 Typescript 1.8,并将 const 枚举的使用替换为示例中的普通枚举。

最佳答案

您还需要从 remote.d.ts 导出内部模块:

remote.d.ts

import * as enums from './enums';

export declare module test {
export interface IRemote {
docType: enums.DocumentType;
}
}

这是因为你有外部模块remote(当有顶级importexport时,文件本身就是模块语句),导出时可以使用哪些类型和其他符号,这很像 IRemote 从模块 test 中导出的方式。

换句话说,你在外部模块中有一个内部模块,但内部模块没有导出。此外,IRemote 接口(interface)实际上是双重包装的,并且符合全名 remote.test.IRemote 的条件。


注意:IMO,在同一个项目中混合使用内部模块和外部模块可能会导致许多问题和不便,如果您不小心的话,应尽可能避免。

关于typescript - 找不到命名空间错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35743376/

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