【发布时间】:2016-03-22 11:23:21
【问题描述】:
以下代码有什么区别:
changeName(): ng.IPromise<any>;
和
changeName: () => ng.IPromise<any>;
我知道一个是返回类型,但我对第一个感到困惑。
这是函数体:
changeName = (): ng.IPromise<any> => {
var self = this;
self.chnAction = "PREFERENCES.CHANGE_NAME.SUBMITTING_BUTTON_TEXT";
self.chnErrorMessage = null;
return self.uss.changeName(
self.chnNewFirstName,
self.chnNewLastName)
.then(
(response: ng.IHttpPromiseCallbackArg<any>): any => {
self.chnAction = "PREFERENCES.CHANGE_NAME.SUBMITTED_BUTTON_TEXT";
self.chnNewFirstName = '';
self.chnNewLastName = '';
self.chnErrorMessage = null;
self.logout();
return this.$state.go('home.auth', { content: 'change_name_success' });
},
(error: ng.IHttpPromiseCallbackArg<any>): ng.IPromise<any> => {
if (error.status === 500) {
self.chnErrorMessage = 'AUTH_SERVICE.UNABLE_TO_CONTACT_SERVER';
} else {
var errors: string[] = [];
Object.keys(error.data.modelState).forEach((key) => {
errors.push.apply(errors, error.data.modelState[key]);
});
self.chnErrorMessage = errors[0];
self.chnErrorMessages = errors;
self.chnAction = "PREFERENCES.CHANGE_NAME.SUBMIT_BUTTON_TEXT";
}
return this.$q.reject(error);
});
};
【问题讨论】:
-
第一个是接口的方法,第二个是接口的属性(Function类型)
-
您现在可以在整个过程中使用
this而不是self,因为this将携带任何=>箭头函数。此外,接口上的方法和函数属性之间没有区别(请参阅我的回答)。
标签: javascript typescript