在 `d.ts` 文件中使用 `export` 有意义吗?
Does it make sense to use `export` within a `d.ts` file?
我正在尝试为我的应用程序全局使用的类型创建一个文件。
reduxState.d.ts
declare namespace MyProject {
type Type1 = someType;
interface SomeInterface {
someProperty: someType
}
}
使用上面的代码,我已经可以在我的项目文件中看到我的 namespace
及其成员。
那么上面的代码和下面使用 export
作为 namespace
成员的代码有什么区别?
declare namespace MyProject {
export type Type1 = someType;
export interface SomeInterface {
someProperty: someType
}
}
它们似乎都工作得很好。有什么区别?
发件人:https://www.typescriptlang.org/docs/handbook/namespaces.html#namespacing
Because we want the interfaces and classes here to be visible outside the namespace, we preface them with export.
在 DOC 的这段摘录中,他们似乎指的是在 ts
而不是 d.ts
文件中声明的 namespace
。这就是为什么在这种情况下需要 export
吗?
在 d.ts
文件中使用 export
是否有意义?
*.d.ts
个文件用于定义,它们在 run-time 处被完全忽略。如果你编写 JS 代码是因为你有一个库或其他东西,我强烈建议使用 export 关键字,因为这使得其他用户更容易看到他们可以从你的代码中使用什么(你没有的东西出口,显然不能在其他地方进口)。
现在您的 use-case:从命名空间导出的所有内容都可以在外部独立使用。这意味着你可以做类似
的事情
const obj: MyProject.SomeInterface = { someProperty: 20 };
由于您使用的是 *.d.ts
文件而不是 *.ts
文件,因此只要您只导出接口,对您来说就没有任何区别,因为它们会在 compile-time 无论如何。
最后一点:*.d.ts
文件使您可以在整个项目中看到您的内容,但如果您计划从那里导入函数或类似函数,显然您需要先导入它们。
我正在尝试为我的应用程序全局使用的类型创建一个文件。
reduxState.d.ts
declare namespace MyProject {
type Type1 = someType;
interface SomeInterface {
someProperty: someType
}
}
使用上面的代码,我已经可以在我的项目文件中看到我的 namespace
及其成员。
那么上面的代码和下面使用 export
作为 namespace
成员的代码有什么区别?
declare namespace MyProject {
export type Type1 = someType;
export interface SomeInterface {
someProperty: someType
}
}
它们似乎都工作得很好。有什么区别?
发件人:https://www.typescriptlang.org/docs/handbook/namespaces.html#namespacing
Because we want the interfaces and classes here to be visible outside the namespace, we preface them with export.
在 DOC 的这段摘录中,他们似乎指的是在 ts
而不是 d.ts
文件中声明的 namespace
。这就是为什么在这种情况下需要 export
吗?
在 d.ts
文件中使用 export
是否有意义?
*.d.ts
个文件用于定义,它们在 run-time 处被完全忽略。如果你编写 JS 代码是因为你有一个库或其他东西,我强烈建议使用 export 关键字,因为这使得其他用户更容易看到他们可以从你的代码中使用什么(你没有的东西出口,显然不能在其他地方进口)。
现在您的 use-case:从命名空间导出的所有内容都可以在外部独立使用。这意味着你可以做类似
的事情const obj: MyProject.SomeInterface = { someProperty: 20 };
由于您使用的是 *.d.ts
文件而不是 *.ts
文件,因此只要您只导出接口,对您来说就没有任何区别,因为它们会在 compile-time 无论如何。
最后一点:*.d.ts
文件使您可以在整个项目中看到您的内容,但如果您计划从那里导入函数或类似函数,显然您需要先导入它们。