My work environment is Nuxt.js Vue works with some typescript.
This problem occurs when for looping inside methods.
I refer to the _id in Objects reservatsions[i].I got the result from the _id
methods: {
async tripdone() {
try {
const legnth = this.myObject.length;
for (let i = 0; i < legnth; i++) {
const status = this.myObject[i].status;
const tripDate = this.myObject[i].date;
const today = new Date();
var year = today.getFullYear();
var month = ("0" + (today.getMonth() + 1)).slice(-2);
var day = ("0" + today.getDate()).slice(-2);
var todayString = year + "-" + month + "-" + day;
if (tripDate < todayString && status === "confirmed") {
const id = this.myObject[i]._id;
const payload = {
status: "tripOver",
};
this.$axios.put(`/api/myObject/${id}`, payload);
const message = id;
const type = "success";
this.$message({ message, type });
}
}
} catch (e) {
const message = "error";
const type = "error";
this.$message({ message, type });
}
}
Vetur's errors in the current syntax are as follows:
(property) reservations: ObjectConstructor
Element implicitly has an 'any' type because expression of type 'number' can't be used to index type 'ObjectConstructor'. No index signature with a parameter of type 'number' was found on type 'ObjectConstructor'.Vetur(7053)
I don't know what type of error this is
I tried to understand it while looking at the typescript
, but I couldn't solve it.
The syntax for the error is as follows
const status = this.myObject[i].status; // string
const tripDate = this.myObject[i].date; // string
const id = this.myObject[i]._id; // number
In dev build, ERROR is generated, but the result was calculated and the desired result was obtained At pm2 start,
ERROR in index/myObject/index.vue:360:26
TS7053: Element implicitly has an 'any' type because expression of type 'number' can't be used to index type 'ObjectConstructor'.
No index signature with a parameter of type 'number' was found on type 'ObjectConstructor'.
358 | const legnth = this.myObject.length
359 | for (let i = 0; i < legnth; i++) {
> 360 | const status = this.myObject[i].status
| ^^^^^^^^^^^^^^^^^^^^
361 | // const legnth = this.myObject.length
362 | // for (let t = 0; t < legnth; t++) {
363 | const tripDate = this.myObject[i].date
ERROR in index/myObject/index.vue:363:28
TS7053: Element implicitly has an 'any' type because expression of type 'number' can't be used to index type 'ObjectConstructor'.
No index signature with a parameter of type 'number' was found on type 'ObjectConstructor'.
361 | // const legnth = this.myObject.length
362 | // for (let t = 0; t < legnth; t++) {
> 363 | const tripDate = this.myObject[i].date
| ^^^^^^^^^^^^^^^^^^^^
364 | const today = new Date()
365 |
366 | var year = today.getFullYear();
ERROR in index/myObject/index.vue:377:24
TS7053: Element implicitly has an 'any' type because expression of type 'number' can't be used to index type 'ObjectConstructor'.
No index signature with a parameter of type 'number' was found on type 'ObjectConstructor'.
375 | // return tripDate < todayString
376 | if ( tripDate < todayString && status ==='confirmed') {
> 377 | const id = this.myObject[i]._id
| ^^^^^^^^^^^^^^^^^^^^
378 | const payload = {
379 | status: "tripOver"
380 | }
I seek advice on the reasons and solutions for this phenomenon
add myOject define below
data () {
return{
myObject: Object
}
}
My work environment is Nuxt.js Vue works with some typescript.
This problem occurs when for looping inside methods.
I refer to the _id in Objects reservatsions[i].I got the result from the _id
methods: {
async tripdone() {
try {
const legnth = this.myObject.length;
for (let i = 0; i < legnth; i++) {
const status = this.myObject[i].status;
const tripDate = this.myObject[i].date;
const today = new Date();
var year = today.getFullYear();
var month = ("0" + (today.getMonth() + 1)).slice(-2);
var day = ("0" + today.getDate()).slice(-2);
var todayString = year + "-" + month + "-" + day;
if (tripDate < todayString && status === "confirmed") {
const id = this.myObject[i]._id;
const payload = {
status: "tripOver",
};
this.$axios.put(`/api/myObject/${id}`, payload);
const message = id;
const type = "success";
this.$message({ message, type });
}
}
} catch (e) {
const message = "error";
const type = "error";
this.$message({ message, type });
}
}
Vetur's errors in the current syntax are as follows:
(property) reservations: ObjectConstructor
Element implicitly has an 'any' type because expression of type 'number' can't be used to index type 'ObjectConstructor'. No index signature with a parameter of type 'number' was found on type 'ObjectConstructor'.Vetur(7053)
I don't know what type of error this is
I tried to understand it while looking at the typescript
, but I couldn't solve it.
The syntax for the error is as follows
const status = this.myObject[i].status; // string
const tripDate = this.myObject[i].date; // string
const id = this.myObject[i]._id; // number
In dev build, ERROR is generated, but the result was calculated and the desired result was obtained At pm2 start,
ERROR in index/myObject/index.vue:360:26
TS7053: Element implicitly has an 'any' type because expression of type 'number' can't be used to index type 'ObjectConstructor'.
No index signature with a parameter of type 'number' was found on type 'ObjectConstructor'.
358 | const legnth = this.myObject.length
359 | for (let i = 0; i < legnth; i++) {
> 360 | const status = this.myObject[i].status
| ^^^^^^^^^^^^^^^^^^^^
361 | // const legnth = this.myObject.length
362 | // for (let t = 0; t < legnth; t++) {
363 | const tripDate = this.myObject[i].date
ERROR in index/myObject/index.vue:363:28
TS7053: Element implicitly has an 'any' type because expression of type 'number' can't be used to index type 'ObjectConstructor'.
No index signature with a parameter of type 'number' was found on type 'ObjectConstructor'.
361 | // const legnth = this.myObject.length
362 | // for (let t = 0; t < legnth; t++) {
> 363 | const tripDate = this.myObject[i].date
| ^^^^^^^^^^^^^^^^^^^^
364 | const today = new Date()
365 |
366 | var year = today.getFullYear();
ERROR in index/myObject/index.vue:377:24
TS7053: Element implicitly has an 'any' type because expression of type 'number' can't be used to index type 'ObjectConstructor'.
No index signature with a parameter of type 'number' was found on type 'ObjectConstructor'.
375 | // return tripDate < todayString
376 | if ( tripDate < todayString && status ==='confirmed') {
> 377 | const id = this.myObject[i]._id
| ^^^^^^^^^^^^^^^^^^^^
378 | const payload = {
379 | status: "tripOver"
380 | }
I seek advice on the reasons and solutions for this phenomenon
add myOject define below
data () {
return{
myObject: Object
}
}
Share
Improve this question
edited Jun 28, 2022 at 14:20
Vanish
asked Jun 28, 2022 at 13:58
VanishVanish
1012 silver badges8 bronze badges
2
-
You can put your type inline
(this.myobject as YourType)[i]._id;
– Ilijanovic Commented Jun 28, 2022 at 14:06 - It causes other errors. Conversion of type 'ObjectConstructor' to type 'string' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.Vetur(2352) – Vanish Commented Jun 28, 2022 at 14:12
1 Answer
Reset to default 4thx to reply bill.gates
(this.myobject as YourType)[i]._id;
This form works perfectly
Instead, I put any
in the type.
It functions as I want
(this.myobject as any)[i]._id;
Is there a problem if I put any
?