我的代码看起来像这样:
class UserService implements IUserService {
data: IUserServiceData = {
expirationDate: null,
isAuthenticated: false,
};
static $inject = [];
constructor () {}
isAuthenticated = () => {
if (this.data.isAuthenticated && !this.isAuthenticationExpired(this.data.expirationDate)) {
return true;
} else {
try {
this.retrieveSavedData();
} catch (e) {
return false;
// throw new NoAuthenticationException('Authentication not found');
}
return true;
}
};
// Original Javascript code here
//function AuthenticationRetrievalException(message) {
// this.name = 'AuthenticationRetrieval';
// this.message = message;
//}
AuthenticationRetrievalException = (message) => {
this.name = 'AuthenticationRetrieval';
this.message = message;
}
retrieveSavedData = () => {
var savedData = this.utilityService.userCache.get('data');
if (typeof savedData === 'undefined') {
throw new AuthenticationRetrievalException('No authentication data exists');
} else if (isAuthenticationExpired(savedData.expirationDate)) {
throw new AuthenticationExpiredException('Authentication token has already expired');
} else {
this.data = savedData;
this.setHttpAuthHeader();
}
}
}
我应该怎么做呢。在我开始尝试转换它之前,我的JavaScript源代码中的引用?
我不知道如何在Typescript中编写这部分代码:
AuthenticationRetrievalException = (message) => {
this.name = 'AuthenticationRetrieval';
this.message = message;
}
答案 0 :(得分:2)
我强烈建议您不要在JavaScript(或TypeScript)中创建自己的错误类,只使用Error
(参考:How do I create a custom Error in JavaScript?)
但是你可以在TypeScript中做到这一点。在文件的根级别(不在您的班级中):
function AuthenticationRetrievalError (message) {
this.name = "AuthenticationRetrievalError";
this.message = (message || "");
}
AuthenticationRetrievalError.prototype = Error.prototype;
然后从你的班级内部开始:
throw new AuthenticationRetrievalError('foo');
答案 1 :(得分:1)
如果我理解你并希望在自定义消息中引发错误,则可以使用类Error
:
throw new Error("Authentication not found");
但我不确定这是否是你想要做的。