sah*_*oun 14 arrays variables node.js typescript
我使用 typescript 和 nodejs 来初始化数据库数据,我想声明一个全局数组变量以在函数内部使用:
export { };
import {Address,CodePostal} from 'api/models';
const faker = require('faker')
const _ = require('lodash')
const quantity = 20
var codes
async function setup() {
const adminUser1 = new User(ADMIN_USER_1);
await adminUser1.save();
await seedCodesPostal()
}
async function checkNewDB() {
const adminUser1 = await User.findOne({ email: ADMIN_USER_1.email });
if (!adminUser1) {
console.log('- New DB detected ===> Initializing Dev Data...');
await setup();
} else {
console.log('- Skip InitData');
}
}
const seedCodesPostal = async () => {
try {
var codesPostal = []
for (let i = 0; i < quantity; i++) {
codesPostal.push(
new CodePostal({
codePostal: faker.address.zipCode("####")
})
)
}
codesPostal.forEach(async code => {
await code.save()
})
} catch (err) {
console.log(err);
}
codes = codesPostal ***// here is the error : variable codes has implicitly type 'any' in some locations where its type cannot be determined ***//
}
const seedAddresses = async (codes: any) => {
try {
const addresses = []
for (let i = 0; i < quantity; i++) {
addresses.push(
new Address({
street: faker.address.streetName(),
city: faker.address.city(),
number: faker.random.number(),
codePostal: _.sample(codes),
country: faker.address.country(),
longitude: faker.address.longitude(),
latitude: faker.address.latitude(),
})
)
}
} catch (error) {
}
}
checkNewDB();
Run Code Online (Sandbox Code Playgroud)
我想将codesPostal 的内容放入codes 变量内的函数seedCodesPostal 中,并将其作为参数传递到函数seedAddresses 中。
如何将代码变量定义为 CodesPostal correclty 数组?
Ale*_*yne 21
当您创建一个类似类型的数组时,类型let arr = []被推断为any[],因为 Typescript 不知道该数组中将包含什么。
因此,您只需将该数组键入为CodePostal实例数组:
var codesPostal: CodePostal[] = []
Run Code Online (Sandbox Code Playgroud)
您还需要codes在try块内分配,否则如果触发codesPostal则永远无法设置。catch
通过这些编辑,您最终会得到简化的代码:
const quantity = 20
// Added type here
var codes: CodePostal[] = []
class CodePostal {
async save() { }
}
const seedCodesPostal = async () => {
try {
// Added type here.
var codesPostal: CodePostal[] = []
for (let i = 0; i < quantity; i++) {
codesPostal.push(
new CodePostal()
)
}
codesPostal.forEach(async code => {
await code.save()
})
// Moved assignment inside try block
codes = codesPostal
} catch (err) {
console.log(err);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49819 次 |
| 最近记录: |