如何获取 Chalk 支持的所有颜色的名称?
How to get the names of all colors supported by Chalk?
我在 TypeScript 中使用 Chalk NPM 包。如果我为 Chalk 动态设置颜色,则会收到 TS 错误。我可以使用像 chalk[color] as Chalk
这样的类型断言,但如果可能的话,我更愿意使用类型谓词,这需要我能够访问支持的颜色列表。
那么,有没有一种方法可以访问 Chalk 中支持的颜色列表,或者有另一种方法来解决这个问题,而不使用类型断言,并且可能使用类型谓词?
可能需要启用 tsconfig.json
中 compilerOptions
中的 strict
选项,才能显示错误。
代码如下,错误在评论:
import chalk from 'chalk';
function getColor(): string {
return 'blue';
}
const color = getColor();
/**
* Element implicitly has an 'any' type because expression of type 'string'
* can't be used to index type 'Chalk & { supportsColor: ColorSupport; }'.
*
* No index signature with a parameter of type 'string' was found on type 'Chalk
* & { supportsColor: ColorSupport; }'.ts(7053)
*/
console.log(chalk[color]('test'));
是的,这是可能的,而且您甚至不需要类型谓词。
Chalk 导出两种定义支持的前景和背景类型的联合类型:分别为 ForegroundColor
和 BackgroundColor
(以及方便的联合类型 Color
)。您可以简单地导入它们并将其中之一(或两者)添加为 getColor
函数的 return 类型:
import chalk, { type ForegroundColor, type BackgroundColor } from 'chalk';
function getColor(): ForegroundColor | BackgroundColor {
return 'blue';
}
const color = getColor();
console.log(chalk[color]('test')); // OK
我在 TypeScript 中使用 Chalk NPM 包。如果我为 Chalk 动态设置颜色,则会收到 TS 错误。我可以使用像 chalk[color] as Chalk
这样的类型断言,但如果可能的话,我更愿意使用类型谓词,这需要我能够访问支持的颜色列表。
那么,有没有一种方法可以访问 Chalk 中支持的颜色列表,或者有另一种方法来解决这个问题,而不使用类型断言,并且可能使用类型谓词?
可能需要启用 tsconfig.json
中 compilerOptions
中的 strict
选项,才能显示错误。
代码如下,错误在评论:
import chalk from 'chalk';
function getColor(): string {
return 'blue';
}
const color = getColor();
/**
* Element implicitly has an 'any' type because expression of type 'string'
* can't be used to index type 'Chalk & { supportsColor: ColorSupport; }'.
*
* No index signature with a parameter of type 'string' was found on type 'Chalk
* & { supportsColor: ColorSupport; }'.ts(7053)
*/
console.log(chalk[color]('test'));
是的,这是可能的,而且您甚至不需要类型谓词。
Chalk 导出两种定义支持的前景和背景类型的联合类型:分别为 ForegroundColor
和 BackgroundColor
(以及方便的联合类型 Color
)。您可以简单地导入它们并将其中之一(或两者)添加为 getColor
函数的 return 类型:
import chalk, { type ForegroundColor, type BackgroundColor } from 'chalk';
function getColor(): ForegroundColor | BackgroundColor {
return 'blue';
}
const color = getColor();
console.log(chalk[color]('test')); // OK