interface Palette { red: number[]; green: string; blue: number[]; black?: boolean; } type Colors = 'red' | 'green' | 'blue'; type RGB = [number, number, number]; const palette = { red: [255, 0, 0], green: '#00ff00', blue: [0, 0, 255] } satisfies Record<Colors, RGB | string> as Palette; // 当使用 as Record<Colors, RGB | string>; 时,推断不出属性的具体类型,当使用 satisfies Record<Colors, RGB | string>时,可以推断具体类型 palette.green.startsWith('#'); // √ boolean palette.red.find((x) => true); // × 类型“number[]”上不存在属性“startsWith”。 palette.blue.entries(); // √ const config = { name: 'app-1', version: '2.0', service: 'users' } satisfies Record<string, string>; // const config:Record<string, string> 这样的写法无法在调用属性的时候获取自动提示,satisfies的话可以让系统自动推断类型 config.name = '123';
标签:blue,palette,4.9,ts,number,Record,satisfies,red From: https://www.cnblogs.com/llcdbk/p/17390345.html