如何确保所有出口均为同一类型?

时间:2019-12-08 05:22:43

标签: typescript

提供文件:

export const hello = 'hello'
export const goodbye = 'goodbye'

如何确保此文件中的所有导出均为字符串类型?

2 个答案:

答案 0 :(得分:0)

您不能限制要导出的类型。如此处所述,Declaring multiple TypeScript variables with the same type需要导出指定类型的所有成员。

答案 1 :(得分:0)

您不能直接执行此操作,但是可以在仅需要字符串的位置使用模块导出的类型。由于模块可以是自引用的,因此您甚至可以在同一模块中添加此测试:

//test.ts
export const hello = 'hello'
export const goodbye = 'goodbye'
export const bad = 1

type RequireStrings<T extends Record<keyof T, string>> = T
type _Test = RequireStrings<typeof import('./test')>;
// type 'typeof import(".../test")' does not satisfy the constraint 'Record<"hello" | "goodbye" | "bad", string>'.
//   Types of property 'bad' are incompatible.
//     Type '1' is not assignable to type 'string'.ts(2344)