Typescript 如何扩展类型?

528 阅读1分钟

如何给对象添加属性

已知框架提供了User类型如下,现在我想扩展这个类型,添加一个属性,以方便后续其他地方使用。

interface User {
    name: string
    age: number
}

const user: User = {
    name: 'hans',
    age: 22,
    location: 'shanghai'
    // 这里将会报错
    // 不能将类型“{ name: string; age: number; location: string; }”分配给类型“User”。
}


// 解决方案

type MyUser = User & { location: string };

const user: MyUser = {
    name: "hans",
    age: 22,
    location: "shanghai",
};

如何给对象剔除一些属性

只知类型User如下,现在我想从这个类型中剔除一些属性,得到新的类型。

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

// 解决方案
type MyUser = Omit<User, "location">;