【发布时间】:2017-03-26 07:10:21
【问题描述】:
我正在将 angular 1 转换为 angular 2(离子 2),我创建了这个提供程序来替换服务,但我在本地函数中遇到了错误。
如何使用 angular2 和 Typescript 声明本地函数?
import { Injectable } from '@angular/core';
@Injectable()
export class PouchSeed {
constructor() { }
function normalizeDoc(doc, id) {
function normalize(doc) {
doc = angular.copy(doc);
Object.keys(doc).forEach(function (prop) {
var type = typeof doc[prop];
if (type === 'object') {
doc[prop] = normalize(doc[prop]);
} else if (type === 'function') {
doc[prop] = doc[prop].toString();
}
});
return doc;
}
var output = normalize(doc);
output._id = id || doc._id;
output._rev = doc._rev;
return output;
}
....
seed(db, designDocs, callback) {
if (!db || !designDocs) {
throw new TypeError('`db` and `design` are required');
}
var local = objMapValues(objMapKeys(designDocs, addDesign), normalizeDoc);
var seedPromise = db.allDocs({include_docs: true, keys: Object.keys(local)})
.then(function (docs) {
var remote = {};
docs.rows.forEach(function (doc) {
if (doc.doc) {
remote[doc.key] = doc.doc;
}
});
var update = Object.keys(local).filter(function (key) {
if (!remote[key])
return true;
local[key]._rev = remote[key]._rev;
return !docEqual(local[key], remote[key]);
}).map(function (key) {
return local[key];
});
if (update.length > 0) {
return db.bulkDocs({docs: update});
} else {
return Promise.resolve(false);
}
})
.then(function (result) {
if (typeof callback === 'function') {
callback(null, result);
}
return Promise.resolve(result);
})
.catch(function (err) {
if (typeof callback === 'function') {
callback(err, null);
}
console.log(err);
return Promise.reject(err);
});
return seedPromise;
};
}
错误:
Typescript Error
Unexpected token. A constructor, method, accessor, or property was expected.
src/providers/pouch-seed.ts
function normalizeDoc(doc, id) {
function normalize(doc) {
【问题讨论】:
-
你不能在 TypeScript 的类中放置 "local function"。正如错误所说,您只能将构造函数、方法、访问器或属性放在一个类中。见the docs。
-
如果
seed和normalizeDoc在同一级别,为什么不从normalizeDoc中删除函数? -
我是 angular2 的新手,我还不懂类! @echonax 确实,我猜它们处于同一水平,所以我删除了“函数”的出现,现在我有另一个错误
Typescript Error ';' expected. src/providers/pouch-seed.ts normalizeDoc(doc, id) { normalize(doc) { -
这样嵌套方法可以吗?我应该添加“;”什么地方?