【问题标题】:Momentjs with Typescript : "type string is not assignable to type 'Date'"带有 Typescript 的 Momentjs:“类型字符串不可分配给类型‘日期’”
【发布时间】:2017-10-17 09:37:50
【问题描述】:

到目前为止,我一直在使用这样的 momentjs 库:

import * as moment from 'moment'; // import moment.
@Component({..});
export class TestClass {
  lastUpdated = Date
  constructor(private myService: MyService){
    this.lastUpdated = this.getCurrentTime(); **// this shows error.. that type string is not assignable to type 'Date'**
  }
 var getCurrentTime(){
    return moment().format('DD MMM YYYY HH:mm:ss'); 
 }
}

上面的代码向我显示了这个错误:该类型字符串不可分配给类型 'Date'**

但是当我使用这一行代替导入模块时,相同的代码完全可以正常工作,即使是其他resturent os

声明 var 时刻:任意;

但我不能使用上面的语句,因为它正在使用 "var": 和 'any' 不是 Lint 建议的。

为什么 getCurrentTime 返回字符串?这不应该返回日期

【问题讨论】:

  • 将 lastUpdated = 日期更改为 lastUpdated:moment()
  • 不好意思改成lastUpdated = moment();
  • getCurrentTime() 返回一个字符串 b/c moment 的 format() 方法返回一个字符串。 momentjs.com/docs/#/displaying/format
  • format 的全部目的是返回格式化字符串。 “格式化日期”会是什么样子?

标签: angularjs angular typescript


【解决方案1】:

可以通过下面的代码避免再调用一个函数


import * as moment from 'moment'; // import moment.
@Component({..});
export class TestClass {
  lastUpdated: string;
  constructor(private myService: MyService){
    this.lastUpdated = moment(this.lastUpdated).format('DD MMM YYYY HH:mm:ss');
  }
}

【讨论】:

  • 我认为moment(this.lastUpdated) 应该是moment()
【解决方案2】:

“类型字符串不可分配给类型‘日期’”

lastUpdated = Date 应该是lastUpdated: string

代码

还修复了一些其他问题:

import * as moment from 'moment'; // import moment.
@Component({..});
export class TestClass {
  lastUpdated: string;
  constructor(private myService: MyService){
    this.lastUpdated = this.getCurrentTime();
  }
 getCurrentTime(){
    return moment().format('DD MMM YYYY HH:mm:ss'); 
 }
}

【讨论】:

    猜你喜欢
    • 2020-05-20
    • 2023-02-15
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    • 2021-02-22
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多