小编Edu*_*yan的帖子

如何设置现有moment.js对象的日期

假设我有一个现有的时刻对象:

var m = moment(); // this will default to now
Run Code Online (Sandbox Code Playgroud)

并希望使用新的Date对象更新它,但不要替换整个对象.对我来说,这不是一个可接受的解决方案:

m = moment(new Date());
Run Code Online (Sandbox Code Playgroud)

我可以在docs中找到的唯一解决方案是使用set方法:

m.set({'year': 2013, 'month': 3});
Run Code Online (Sandbox Code Playgroud)

但是通过这种方式,我们需要将现有的Date对象拆分为这样的和平:

var myDate = new Date();
var newDate = moment(myDate);

var splittedDate = {
    year: newDate.get('year'),
    month: newDate.get('month'),
    date: newDate.get('date'),
    hour: newDate.get('hour'),
    minute: newDate.get('minute'),
    second: newDate.get('second'),
    millisecond: newDate.get('millisecond')
};

m.set(splittedDate);
Run Code Online (Sandbox Code Playgroud)

但这看起来很丑陋.也许有人可以提出更好的解决方案?

javascript momentjs

15
推荐指数
2
解决办法
3万
查看次数

通过向PromiseLike添加例外来修改es6 promise类型

为什么?要找到一个大的代码库,其中的错误ng.IPromise,并Promise混合在一起.

我已经通过修改这个来为ng.IPromise打字做了这个:

interface IPromise<T> {
    then<TResult>(successCallback: (promiseValue: T) => IPromise<TResult>|TResult, errorCallback?: null | undefined, notifyCallback?: (state: any) => any): IPromise<TResult>;
    // ...
}
Run Code Online (Sandbox Code Playgroud)

对此:

interface IPromise<T> {
    then<TResult>(successCallback: (promiseValue: T) => IPromise<TResult>|TResult, errorCallback?: null | undefined, notifyCallback?: (state: any) => any): TResult extends Promise<any> ? never : IPromise<TResult>;
    // ...
}
Run Code Online (Sandbox Code Playgroud)

但本机Promise类型更复杂,因为它引入了PromiseLike类型来解析任何具有then方法的对象的结果:

interface PromiseLike<T> {
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) …
Run Code Online (Sandbox Code Playgroud)

typescript es6-promise

7
推荐指数
0
解决办法
178
查看次数

标签 统计

es6-promise ×1

javascript ×1

momentjs ×1

typescript ×1