gpt4 book ai didi

typescript :如何将定义分解成单独的文件

转载 作者:搜寻专家 更新时间:2023-10-30 21:50:17 25 4
gpt4 key购买 nike

我正在为整个 TS 项目使用单个定义文件,并且工作正常。

我想知道是否可以按功能/组件将 ts 的定义分解为单独的文件。这样,每个组件都会有自己的定义,增加主定义命名空间,就像 @types 对 angular 及其插件(animate、ui.router 等)所做的那样。但我不确定该怎么做。

我的文件夹结构:

index.ts
index.d.ts
app
shared
shared.ts
shared.d.ts
user.ts
config.ts
login
login.ts
login.d.ts
login.component.ts
login.component.html

我的定义文件:

// shared.d.ts
export namespace shared {
interface IConfig {
url: string;
}
}

// login.d.ts
export namespace login {
interface ILogin {
logIn(): Promise<any>;
logOut(): Promise<any>;
}
}

// index.d.ts
import * as sharedModule from './app/shared/shared';
import * as loginModule from './app/login/login';

declare module App {
// extend the App module with the imported definitions. How?
}

我的 tsconfig.json

{
"compilerOptions": {
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false,
"typeRoots": ["node_modules/@types/", "src/"]
},
"compileOnSave": false,
"filesGlob": [
"src/**/*.ts",
"src/**/*.tsx",
"!node_modules/**"
]
}

这可能吗?我该怎么做?

最佳答案

一种方法是使用引用路径声明命名空间而不是导出它们。

共享.d.ts

declare namespace shared {
interface IConfig {
url: string;
}
}

登录.d.ts

declare namespace login {
interface ILogin {
logIn(): Promise<any>;
logOut(): Promise<any>;
}
}

索引.d.ts

/// <reference path="shared.d.ts" />
/// <reference path="login.d.ts" />

declare module "App" {
// we now have access to the `shared` namespace.
const config: shared.IConfig;
}

这是上面在 VSCode 中工作的屏幕截图。

enter image description here

关于 typescript :如何将定义分解成单独的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45804316/

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