Im trying to access my data in a method I am writing, but it does not seem to work. I get an TS2339 Typescript error saying that the property does not exist in the type.
JavaScript
x
9
1
TS2339: Property 'players' does not exist on type '{ onAddPlayers(): void; getPlayerPlaceholder(index: number): string; }'.
2
47 | methods: {
3
48 | onAddPlayers() {
4
> 49 | this.games = prepareGames(this.players as PadelPlayer[]);
5
| ^^^^^^^
6
50 | },
7
51 | getPlayerPlaceholder(index: number) {
8
52 | const playerNumber = Number(index) + 1;
9
Here is the code for the component:
JavaScript
1
26
26
1
<script lang="ts">
2
import { PadelGame } from "@/models/padelGame.interface";
3
import { getPadelPlayers, prepareGames } from "../services/americanoService";
4
import { PadelPlayer } from "@/models/padelPlayer.interface";
5
6
const padelGames: PadelGame[] = [];
7
8
export default {
9
data() {
10
return {
11
players: getPadelPlayers(),
12
games: padelGames,
13
};
14
},
15
methods: {
16
onAddPlayers() {
17
this.games = prepareGames(this.players as PadelPlayer[]);
18
},
19
getPlayerPlaceholder(index: number) {
20
const playerNumber = Number(index) + 1;
21
return "Spelare " + playerNumber;
22
},
23
},
24
};
25
</script>
26
Advertisement
Answer
to get types inference you should create component instance using defineComponent
imported from vue:
JavaScript
1
26
26
1
<script lang="ts">
2
import { PadelGame } from "@/models/padelGame.interface";
3
import { getPadelPlayers, prepareGames } from "../services/americanoService";
4
import { PadelPlayer } from "@/models/padelPlayer.interface";
5
import {defineComponent} from 'vue'
6
const padelGames: PadelGame[] = [];
7
8
export default defineComponent({
9
data() {
10
return {
11
players: getPadelPlayers(),
12
games: padelGames,
13
};
14
},
15
methods: {
16
onAddPlayers() {
17
this.games = prepareGames(this.players as PadelPlayer[]);
18
},
19
getPlayerPlaceholder(index: number) {
20
const playerNumber = Number(index) + 1;
21
return "Spelare " + playerNumber;
22
},
23
},
24
});
25
</script>
26