Javascript 类型 'false' 无法分配给类型 'string'

标签 javascript typescript ionic-framework

试图找出声明 event.allDay = false 时我错过了什么。

以下代码工作正常,但 vscode 错误不会消失。

loadFromDevice(year, month, status) {
    this.db.dbState().subscribe(res => {
        if (res) {
            this.db.fetchActivities(year, month, status).subscribe(item => {

                // console.log("fetchActivities:")
                // console.log(item)

                // var entry: {
                //     allDay: boolean
                // }

                item.forEach(function (entry) {
                    var date = new Date();
                    entry.startTime = new Date(entry.start_datetime);
                    entry.endTime = new Date(entry.end_datetime);
                    entry.allDay = false
                })

                return this.eventSource = item;

            })
        }
    })
}

enter image description here

如果我犯了错误,请感谢任何线索或纠正。谢谢。


解决方案

根据我收到的建议将我的解决方案粘贴到此处。

loadFromDevice(year, month, status) {
        this.db.dbState().subscribe(res => {
            if (res) {
                this.db.fetchActivities(year, month, status).subscribe(data => {

                    // console.log("Activities->loadFromDevice.fetchActivities:")
                    // console.log(data)

                    let cal = [];
                    data.forEach(function(item) {
                        cal.push({
                            title: item.title,
                            startTime: new Date(item.start_datetime),
                            endTime: new Date(item.end_datetime),
                            allDay: (item.all_day == 'true') ? true : false
                        })

                    })

                    console.log("Activities->loadFromDevice.cal:")
                    console.log(cal)

                    return this.eventSource = cal;
                });
            }
        });
    }

这非常有效!

最佳答案

您不是在编写 JavaScript,而是在编写 TypeScript。

在某个地方(没有提供足够的上下文),这些 entry 对象有一个类型定义,声明 allDay 属性由字符串表示。它可能看起来像这样(但也可能是类型,...而不是接口(interface)):

interface Entry {
  startTime: Date;
  endTime: Date;
  allDay: string;
}

但是,您尝试分配一个 bool false 值(不是字符串),因此 TypeScript 编译器会通知您类型违规。

关于Javascript 类型 'false' 无法分配给类型 'string',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62277068/

相关文章:

javascript - Chart.js 折线图工具提示显示错误的标签,当线条不是从第一个标签开始时

javascript - 在 jQuery AJAX 调用中是否有任何类似于 'finally' 的东西?

javascript - 为什么 Protractor 在连续两行引用元素时无法定位元素?

node.js - 在 GraphQL Schema 中定义 map 对象的最佳方式?

javascript - 如何从数组中动态加载 ionic 选项?

方括号之间的 Javascript 递增数字

javascript - AJAX xmlhttp.open

Typescript 1.5 导出/导入类

javascript - 如何在 ionic 4 中为图像添加预加载器背景

ionic-framework - ion-tab 选项卡属性和 ion-fab routerLink 之间的不同行为