【问题标题】:Getting (TS) Type '() => string' is not assignable to type 'string'获取(TS)类型“()=>字符串”不可分配给类型“字符串”
【发布时间】:2019-09-06 04:34:40
【问题描述】:

我收到以下错误,我无法弄清楚它为什么抱怨..

错误 TS2322 (TS) 类型“() => 字符串”不可分配给类型 '字符串'。

我最近找到有关此错误的信息是here,但虽然错误相同,但情况并非如此。

我将定义为字符串的“cssClasses”等同于返回字符串的匿名函数。这就是想法,函数返回一个字符串,但它说“字符串不可分配给字符串”

我该如何解决这个问题?

这是我的代码:

        for (let day = 0; day < numberOfDays; day++) {

        cssClasses = (): string => {

            if (day == calendarLayout.dayDifference) {
                return "cal-heading2-day-" + day.toString() + " " + cssToday;
            } else
                return ("cal-heading2-date-" + day.toString())
        }...

【问题讨论】:

  • 函数不是字符串。因此,您不能将函数分配给字符串类型的变量。这就是错误告诉你的。您可以调用函数并将其返回的字符串分配给变量,如果这是您想要做的。但我真的不明白这个函数的意义。

标签: typescript


【解决方案1】:

您的函数的正确类型如下:

const cssClasses: () => string = () => {
    if (day == calendarLayout.dayDifference) {
        return "cal-heading2-day-" + day.toString() + " " + cssToday;
    } else {
        return ("cal-heading2-date-" + day.toString());
    }
}

正如 cmets 中正确指出的那样,您尝试将类型 string 分配给返回字符串的 function,这是完全不同的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 2021-01-03
    • 2019-02-27
    • 2021-02-22
    • 2020-04-03
    相关资源
    最近更新 更多