typescript疑难杂症

130 阅读1分钟

as const只读类型

对于数组和对象,可以使用 as const 来将其转换为只读类型

const a = ["jack", 123, { gender: "male" }];

const b = ["jack", 123, { gender: "male" }] as const;

image.png

加了as const之后,类型变为只读

image.png

泛型定义

一个方法传入一个字符串数组,返回一个对象,对象的key是数组的每一项,value是数组的每一项

如果想精确返回的对象展示的类型,需要加as { [key in K]: string } K是泛型

// 初始值使用 as { [key in K]: string } 来定义
const getArray = <K extends string>(keys: K[]) => {
  return keys.reduce((pre, cur) => {
    return { ...pre, [cur]: cur };
  }, {} as { [key in K]: string });
};
const newArr = getArray(["name", "age"]);

image.png

加了as { [key in K]: string }之后

image.png