如果我有这样的类型:
type T = {
a: string,
_a: string,
b: number,
_c: boolean,
/* ... any number of unknown properties ... */
};
有没有什么办法可以定义一个新的映射类型,它具有所有(且只有)不以字母_
开头的属性T
?
例如,我想将上面的类型解析为{ a: string, b: number }
.
如果我有这样的类型:
type T = {
a: string,
_a: string,
b: number,
_c: boolean,
/* ... any number of unknown properties ... */
};
有没有什么办法可以定义一个新的映射类型,它具有所有(且只有)不以字母_
开头的属性T
?
例如,我想将上面的类型解析为{ a: string, b: number }
.
可以,您可以只使用the Omit<T, K>
utility type,其中省略的密钥类型是pattern 101 `_${string}`
:
type FilteredT = Omit<T, `_${string}`>;
/* type FilteredT = {
a: string;
b: number;
} */
模式模板文字类型是在microsoft/TypeScript#40598中实现的(但我没有看到任何手册或发行说明文档).类型`_${string}`
可以被读作"后跟任何字符串的下划线字符";即,"以下划线开头的任何字符串".