README
@pansy/types
实用的类型集合
TypeScript >= 3.4
🏗 安装
# npm install
$ npm install @pansy/types --save
# yarn install
$ yarn add @pansy/types
🔨 使用
import { NonUndefined } from '@pansy/types';
type FooWithoutRainbow = NonUndefined<string | null | undefined>;
//=> string | null
目录
- 内置类型
Partial<T>
将T
中所有的属性设为可选 v2.1Readonly<T>
将T
中所有的属性设为只读 v2.1Pick<T,K>
从T
中过滤出属性K
v2.1Record<T,K>
标记对象的 key value类型 v2.1Exclude<T,U>
从T
可分配给的类型中排除U
v2.8Extract<T,U>
从T
可分配给的类型中提取U
v2.8NonNullable<T>
从T
中排除null
和undefined
v2.8ReturnType
获取函数类型T
的返回类型 v2.8InstanceType
获取构造函数类型T
的实例类型 v2.8Required<T>
将T
中所有的属性设为必填Parameters<T>
获取一个函数的所有参数类型 v3.6ConstructorParameters<T>
获取构造函数的所有参数类型 v3.6Omit<T,K>
通过从T
选取所有属性然后删除K
来构造类型 v3.5Uppercase<S>
将字符串中的每个字符转换为大写 v4.1Lowercase<S>
将字符串中的每个字符转换为小写 v4.1Capitalize<S>
-将字符串中的第一个字符转换为大写 v4.1Uncapitalize<S>
将字符串中的第一个字符转换为小写 v4.1
Partial<T>
将T
中所有的属性设为可选。
示例
interface NodeConfig {
appName: string;
port: number;
}
// Expect: { appName?: string; port?: number; }
Partial<NodeConfig>;
Readonly<T>
将T
中所有的属性设为只读。
示例
interface NodeConfig {
appName: string;
port?: number;
}
// Expect: { readonly appName: string; readonly port?: number; }
Readonly<NodeConfig>;
Pick<T, K>
从 T
中过滤出属性 K
。
示例
interface NodeConfig {
name: string;
appName: string;
port?: number;
}
// Expect: { name: string; }
Pick<NodeConfig, 'name'>;
Record<T,K>
标记对象的 key value类型。
示例
// Expect: { [key: string]: number; }
Record<string, number>;
Exclude<T,U>
从T
可分配给的类型中排除U
。
示例
// Expect: 'b' | 'd'
Exclude<"a" | "b" | "c" | "d", "a" | "c" | "f">;
Extract<T,U>
从T
可分配给的类型中提取U
。
示例
// Expect: 'a' | 'c'
Extract<"a" | "b" | "c" | "d", "a" | "c" | "f">;
NonNullable<T>
从T
中排除null
和undefined
。
示例
// Expect: string
NonNullable<string | null | undefined>;
ReturnType<T>
获取函数类型T
的返回类型。
示例
// Expect: string
ReturnType<() => string>;
InstanceType<T>
获取构造函数类型T
的实例类型。
示例
class C {
x = 0;
y = 0;
}
// Expect: C
InstanceType<typeof C>;
Required<T>
将T
中所有的属性设为必填。
示例
interface NodeConfig {
appName?: string;
port?: number;
}
// Expect: { appName: string; port: number; }
Required<NodeConfig>;
Parameters<T>
获取一个函数的所有参数类型。
示例
function shuffle(input: string, input1: number): void {}
// Expect: { input: string; input1: number; }
Parameters<typeof shuffle>;
ConstructorParameters<T>
获取构造函数的所有参数类型
示例
class A {
constructor(input: string, input1: number) {}
}
// Expect: { input: string; input1: number; }
ConstructorParameters<typeof A>;
Omit<T,K>
通过从T
选取所有属性然后删除K
来构造类型。
示例
interface Animal {
imageUrl: string;
species: string;
images: string[];
paragraphs: string[];
}
// Expect: { images: string[]; paragraphs: string[]; }
Omit<Animal, 'imageUrl' | 'species'>;
Uppercase<S>
将字符串中的每个字符转换为大写
示例
// Expect: 'HELLO'
Uppercase<'hello'>;
Lowercase<S>
将字符串中的每个字符转换为小写
示例
// Expect: 'hello'
Uppercase<'HELLO'>;
Capitalize<S>
将字符串中的第一个字符转换为大写
示例
// Expect: 'Hello'
Capitalize<'hello'>;
Uncapitalize<S>
将字符串中的第一个字符转换为小写
示例
// Expect: 'hello'
Uncapitalize<'Hello'>;