1. ホーム
  2. ジャバスクリプト

[解決済み】プロパティ「...」にはイニシャライザがなく、コンストラクタで確実に代入されない

2022-03-23 22:33:35

質問

Angularアプリで、あるコンポーネントがあります。

import { MakeService } from './../../services/make.service';
import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-vehicle-form',
  templateUrl: './vehicle-form.component.html',
  styleUrls: ['./vehicle-form.component.css']
})
export class VehicleFormComponent implements OnInit {
  makes: any[];
  vehicle = {};

  constructor(private makeService: MakeService) { }

  ngOnInit() {
    this.makeService.getMakes().subscribe(makes => { this.makes = makes
      console.log("MAKES", this.makes);
    });
  }

  onMakeChange(){
    console.log("VEHICLE", this.vehicle);
  }
}

しかし、"makes" プロパティに間違いがあります。 どうしたらいいんでしょう...。

解決方法は?

最新版のTypeScriptをお使いかと思います。の「"Strict Class Initialization"」の項をご覧ください。 link .

これを解決する方法は2つあります。

A. VSCodeを使用している場合、エディタが使用するTSのバージョンを変更する必要があります。

B. 配列を宣言するときに初期化するだけ

makes: any[] = [];

またはコンストラクタの内部で使用します。

constructor(private makeService: MakeService) { 
   // Initialization inside the constructor
   this.makes = [];
}