Angular 用空可观测函数简化函数
是否有其他方法编写以下函数Angular 用空可观测函数简化函数,angular,typescript,observable,Angular,Typescript,Observable,是否有其他方法编写以下函数 getStation(id) { if (id) { return this.httpClient.get('/api/stations/edit/' + id, {}) }else { return Observable.empty(); } } getStation(id) { return id ? this.httpClient.get('/api/stations/edit/' + id,
getStation(id) {
if (id) {
return this.httpClient.get('/api/stations/edit/' + id, {})
}else {
return Observable.empty();
}
}
getStation(id) {
return id ? this.httpClient.get('/api/stations/edit/' + id, {}) : Observable.empty();
}
我想知道是否有办法删除else
部分,默认情况下,如果没有返回函数,则返回一个空的Observable
getStation(id): Observable<any>
getStation(id):可观察
但这不是那样的
(这都是出于好奇……我会在我的代码中使用“else”)不确定是否一定更好,但你可以使用装饰师:
function DefaultObservable(target, prop) {
let original: Function = target[prop];
target[prop] = function() {
return original.apply(this, arguments) || Observable.empty();
}
}
class MyClass {
@DefaultObservable
getStation(id) {
if (id) {
return this.httpClient.get('/api/stations/edit/' + id, {});
}
}
}
装饰程序会扭曲原始函数,以便在从原始函数返回的值为falsy时返回默认值。有关“从不”运算符的详细信息,请参阅
您可以告诉typescript函数可能永远不会返回任何内容,而不是返回一个空的可观察对象
getStation(id) : Observable<any> | never {
if (id) {
return this.httpClient.get('/api/stations/edit/' + id, {})
}
}
getStation(id):可观察的|从不{
如果(id){
返回此.httpClient.get('/api/stations/edit/'+id,{})
}
}
您对此的用例是什么?您不能将“undefined”作为参数传递给该方法,而只是在代码中的其他地方检查id,并仅在id存在时调用该方法吗?No,您不能纯粹通过定义该方法给出某种默认返回。如果你说它返回的是可观察的,你必须在某一点上明确地这样做。那么…你想要的东西与
其他
完全一样,但不是其他
或三元?我不确定您的目标是什么。不过,您可以指定它可能返回多个类型。只需在类型之间使用管道符号。可观察的|其他类型。不过,这通常不是一个好的做法。(这完全是出于好奇……我会在代码中使用“else”)