Skip to content
导航栏

Typescript类型函数

1. Partial

Partial<T> 的作用就是将某个类型里的属性全部变为可选项 ?

typescript
interface User {
    name: string;
    age: number;
}

const partialUser: Partial<User> = {
    name: 'hzy',
}

2. Readonly

Readonly<T> 的作用就是将某个类型里的属性全部变为只读选项 readonly

typescript
interface User {
    name: string;
    age: number;
}

const readonlyUser: Readonly<User> = {
    name: 'hzy',
    age: 18,
}
readonlyUser.age = 19 // Error: Cannot assign to 'age' because it is a read-only property

3. Record

Record<K, T> 这个工具会构建一个对象类型,其属性名的类型是K,属性值的类型是T。

typescript
type User = {
    name: string;
    age: number;
}

const recordUser: Record<'hzy', User> = {
    hzy: {
        name: 'hzy',
        age: 18,
    }
}

4. Pick

`Pick<T, K extends keyof T>: 这个工具会从类型T中挑选出一些属性,构建一个新的类型。

typescript
interface User {
    name: string;
    age: number;
    address: string;
}

type UserName = Pick<User, 'name'> // { name: string; }

5. Exclude

Exclude<T, U> 这个工具会从类型T中排除与U可以赋值的类型。

typescript
type T = "a" | "b" | "c";
type U = "a" | "e";

type Result = Exclude<T, U>; // "b" | "c"

6. Omit

Omit<T, K> 这个工具会从类型T中剔除出K指定的属性

typescript
interface User {
    name: string;
    age: number;
    address: string;
}

type UserWithoutAddress = Omit<User, "address">;  // { name: string; age: number; }

7. Required

Required<T> 这个工具会将类型T中的所有属性变为必选项。

typescript
interface User {
    name: string;
    age?: number;
}

const requiredUser: Required<User> = { name: "Alice" }; // Error: Property 'age' is missing in type '{ name: string; }' but required in type 'Required<User>'.

8. NonNullable

NonNullable<T> 这个工具会从类型T中剔除掉null和undefined。

typescript
type T = string | null | undefined;

type NonNullableT = NonNullable<T>;  // string

9. ReturnType

ReturnType<T> 这个工具会获取函数类型返回值的类型。

typescript
function foo() {
    return { name: "Alice", age: 25 };
}

type FooReturnType = ReturnType<typeof foo>;  // { name: string; age: number; }

10. Parameters

Parameters<T> 这个工具会获取函数T的参数类型组成的元组类型。

typescript
function foo(name: string, age: number) {
    // ...
}

type FooParameters = Parameters<typeof foo>;  // [string, number]

11. InstanceType

InstanceType<T> 这个工具会获取构造函数类型的实例类型。

typescript
class User {
    constructor(public name: string, public age: number) { /* ... */ }
}


type UserInstance = InstanceType<typeof User>;  // User