首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >动态设置“黑板”包颜色时的TypeScript错误

动态设置“黑板”包颜色时的TypeScript错误
EN

Stack Overflow用户
提问于 2019-10-15 07:10:17
回答 2查看 4.2K关注 0票数 1

粉笔包装非常流行于节点中的终端样式。

我在用TypeScript。我试图动态地设置颜色。但是我在编译时得到了一个TS错误。

代码:

代码语言:javascript
运行
复制
import chalk, { Chalk } from 'chalk';

function getColor(): keyof Chalk {
  let color: keyof Chalk = 'green';

  color = 'yellow';

  return color;
}

const chalkColor = getColor();

// Error on `chalk[chalkColor]`
console.log(chalk[chalkColor]('message'));

错误(在chalk[chalkColor]上):

代码语言:javascript
运行
复制
This expression is not callable.
  Not all constituents of type 'boolean | (Chalk & { supportsColor: ColorSupport; }) | (ChalkConstructor & Function) | Level | ((r: number, g: number, b: number) => Chalk & { supportsColor: ColorSupport; }) | ... 10 more ... | ((color: string) => Chalk & { ...; })' are callable.
    Type 'false' has no call signatures.

如何解决此错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-15 07:15:43

好吧,我很快就想出来了。但我还是不提这个问题,以防有人有更好的解决方案。我使用了一个包含我打算使用的颜色的枚举。这似乎解决了这个问题。

代码语言:javascript
运行
复制
import chalk from 'chalk';

enum ChalkColor {
  Green = 'green',
  Yellow = 'yellow',
}

function getColor(): ChalkColor {
  let color = ChalkColor.Green;

  color = ChalkColor.Yellow;

  return color;
}

const chalkColor = getColor();

console.log(chalk[chalkColor]('message'));

另一个解决方案是使用(chalk[chalkColor] as Chalk),如下所示:

代码语言:javascript
运行
复制
import chalk, { Chalk } from 'chalk';

function getColor(): keyof Chalk {
  let color: keyof Chalk = 'green';

  color = 'yellow';

  return color;
}

const chalkColor = getColor();

console.log((chalk[chalkColor] as Chalk)('message'));
票数 0
EN

Stack Overflow用户

发布于 2020-10-26 00:23:43

事实上,现在看来Chalk让事情变得更容易了。

https://developer.aliyun.com/mirror/npm/package/chalk

console.log( chalk.keyword(<colorVariableName>)(TextYouWantToLogOut) )

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58389081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档