Typescript学习: Awaited/Prettify

对于 Promise/async 类型的一个有用的返回
更新于: 2023-10-02 10:31:14

示例 Awaited

const func = async () => {
 const val = 'string';
 return val;
};

type ReturnFunc = Awaited<ReturnType<typeof func>>;

示例 Prettify

可以让这种组合式的类型,直接显出所有的key的类型

The `Prettify` Helper

使用 Prettify 的效果
type MainType = {
  name: string;
  age: number;
};

type NestedType = MainType & {
  other: boolean;
};

type Prettify<T> = {
  [K in keyof T]: T[K];
} & {};

type idx = Prettify<NestedType>;

细节

为什么需要  & {}; 这一段

假设你有一个泛型函数,它期望传入一个对象类型,而不是原始值。在这种情况下,你可以使用 Prettify 来确保传入的参数是一个对象类型

测试下来:这个例子不对 !!!

type Prettify<T> = {
  [K in keyof T]: T[K];
} & {};

function processObject<T>(obj: Prettify<T>) {
  // 这里可以确保 obj 是一个对象类型,而不是原始值类型
}

// 使用例子:
processObject({ x: 42 }); // 正确,因为 { x: 42 } 被视为对象类型
processObject(42); // 错误,因为 42 是原始值类型

参考