gpt4 book ai didi

node.js - typescript /nodejs : variable implicitly has type 'any' in some locations

转载 作者:行者123 更新时间:2023-12-03 12:14:10 26 4
gpt4 key购买 nike

我正在使用带有 nodejs 的 typescript 来初始化数据库数据,我想声明一个全局数组变量以在函数内部使用:

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();

我想将codesPostal的内容放在代码变量中的seedCodesPostal函数中,并将其作为参数传递给seedAddresses函数。

如何将代码变量定义为 CodesPostal 正确性数组?

最佳答案

当你创建一个像 let arr = [] 这样的数组时,类型被推断为 any[] ,因为 Typescript 不知道该数组中会有什么。

因此,您只需将该数组键入为 CodePostal 实例数组:

var codesPostal: CodePostal[] = []

您还需要在 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);
}
}

Playground

关于node.js - typescript /nodejs : variable implicitly has type 'any' in some locations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62288150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com