如何解决将类型从声明文件导出到外部项目的最佳实践
我有一个可行的解决方案-导出声明文件中定义的类型,这些类型可在我的项目中使用并导出到外部项目中。
github-项目X
@ types / index.d.ts
declare namespace projectGlobal {
interface Person = {
name: string;
age: number;
}
}
// other localised types here,cannot be exported...
interface Local {
func: () => string
}
src / index.ts
export type Person = ProjectGlobal.Person; // can only export if referenced via namespace.
// export type Local = Local; // This fails to export
const person1: Person = {
name: 'john',age: 45
}
github项目Y
import {Person} from 'projectx';
const person1: Person = {
name: 'john',age: 45
}
虽然我很乐意为此解决,但我想知道这样做是否正确,或者是否有最佳实践。
解决方法
声明文件不应该那样使用。通常,实际上您根本不编写它们。要编写它们的主要原因是:
-
当您在 JavaScript 中拥有一个库并且希望TypeScript用户也能够使用它时。您可以用TypeScript重写您的库,但这并不有趣,因此您可以只编写声明并将代码保留在JavaScript中。
-
有时您想声明一些全局的东西。例如,在React项目中,您可以从图像文件
app.use(cookieParser()); app.use(session({ secret: 'bla' })); passportConfig(app);
,.png
和co中导入数据。因此,React创建了一个带有声明的.jpg
文件(因为默认情况下,TS不会将这些文件视为模块):
.d.ts
差不多了,在其他情况下,只使用普通的declare module '*.jpg' {
const url: string
export default url
}
文件即可。
.ts
我没有任何理由,为什么您不能这样做,如果有理由的话,请随时发表评论。如果只想将类型和逻辑分开,则创建export type Person = {
name: string
age: number
}
const person1: Person = {
// ...
}
和types.ts
并使用do-stuff.ts
重新导出内容:
index.ts
// types.ts
export type Person = {
name: string
age: number
}
// do-stuff.ts
import { Person } from './types'
const person1: Person = {
// ...
}
export default person1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。