当我使用--Prod选项(ng build --prod)和不使用(ng build)构建以下代码时,我观察到行为上的差异。
在以下情况下,不会调用if else堆栈(带有instanceof检查):
和
如果console.log保留并使用--prod选项构建,则代码可以正常工作。
在开发人员模式下运行时,无论是否有console.log,代码都可以正常工作。 (ng服务)
服务方法
getTrends(porfolioId:string):Observable<Trend[]>{
return this._portfolioService
.getPortfolioRef(porfolioId)
.collection(this.collection_trends,ref=>{
return ref.orderBy('date','desc').limit(100);
})
.snapshotChanges()
.pipe(
map(actions => {
return actions.map(action => {
let trend:Trend = new Trend();
trend=action.payload.doc.data() as Trend;
if(trend.date instanceof firestore.Timestamp){
let ts:firestore.Timestamp=trend.date;
trend.date=new Date(ts.toDate());
console.log('trend.date (fs ts) converted to date'+trend.date);
}else{
trend.date=new Date(trend.date);
}
return trend;
})
})
);
}
没有Console.log的编译代码
e.prototype.getTrends = function(e) {
return this._portfolioService.getPortfolioRef(e).collection(this.collection_trends, function(e) {
return e.orderBy("date", "desc").limit(100)
}).snapshotChanges().pipe(Object(w.a)(function(e) {
return e.map(function(e) {
var t = new ne;
return t.date = (t = e.payload.doc.data()).date instanceof re.firestore.Timestamp ? new Date(t.date.toDate()) : new Date(t.date), t
})
}))
}
使用Console.log编译的代码
return e.prototype.getTrends = function(e) {
return this._portfolioService.getPortfolioRef(e).collection(this.collection_trends, function(e) {
return e.orderBy("date", "desc").limit(100)
}).snapshotChanges().pipe(Object(w.a)(function(e) {
return e.map(function(e) {
var t = new ne;
return (t = e.payload.doc.data()).date instanceof re.firestore.Timestamp ? (t.date = new Date(t.date.toDate()), console.log("trend.date (fs ts) converted to date" + t.date)) : t.date = new Date(t.date), t
})
}))
}
角度版本为6.0.6
行为不同的原因可能是什么,如何删除console.log?