Ben*_*ins 9 properties typescript
这个计算属性lastSeenString过去对我有用:
export class User {
public lastSeen?: Date;
private _lastSeenString?:string = "";
get lastSeenString():string {
return Time.timeSince(this.lastSeen);
}
}
Run Code Online (Sandbox Code Playgroud)
但现在lastSeenString回来了"".return从不调用getter中的语句.怎么会?lastSeen填充.
客户:
it('Displays the user\'s "last seen"', () => {
component.user.lastSeen = new Date();
fixture.detectChanges();
expect(component.user.lastSeenString).toBe("less than a minute ago");
expect(page.lastSeen.innerText).toBe("last seen less than a minute ago");
});
Run Code Online (Sandbox Code Playgroud)
我的打字稿编译成es5.为什么getter中的代码没有执行?
应该执行但不执行的时间类:
export class Time {
public static timeSince(date: Date) {
let start = +new Date();
let elapsed = +new Date() - start;
var seconds = Math.floor((elapsed) / 1000);
// var seconds = Math.floor((new Date() - +date) / 1000);
//var seconds = Math.floor(((new Date().getTime()/1000) - +date))
var interval = Math.floor(seconds / 31536000);
if (interval > 1) {
return interval + " years";
}
interval = Math.floor(seconds / 2592000);
if (interval > 1) {
return interval + " months";
}
interval = Math.floor(seconds / 86400);
if (interval > 1) {
return interval + " days";
}
interval = Math.floor(seconds / 3600);
if (interval > 1) {
return interval + " hours";
}
interval = Math.floor(seconds / 60);
if (interval > 1) {
return interval + " minutes";
}
return "less than a minute ago";
}
}
Run Code Online (Sandbox Code Playgroud)
User类的实际实现:
export var SERENA: User = {
id: 1,
lastSeenString: "",
lastSeen: new Date("October 13, 2016 11:13:00"),
badges: ["active User", "helper"],
memberSince: new Date("October 13, 2014")
}
Run Code Online (Sandbox Code Playgroud)
我看到实现有lastSeenString = "",但我认为这会触发getter而不仅仅是返回"".
更新:我非常确定它必须与导出该JSON对象并将其称为a User.我想我必须重新开始.
Tim*_*rry 16
getter在原型上定义User- 即作为类本身的一部分.您需要使用该类(例如with new User())构建您的实例,以使getter工作.
目前,您只需构建一个vanilla JavaScript对象,然后告诉TypeScript它与真实User对象的形状相同.这会传递类型检查,因为它是相同的形状 - 读取它上面的任何字段将返回与真实User对象相同类型的值 - 但这并不能告诉您有关这些类型的基本行为的信息领域.
| 归档时间: |
|
| 查看次数: |
5184 次 |
| 最近记录: |