簡體   English   中英

打字稿X不是函數

[英]Typescript X is not a function

我的代碼有問題。 編譯代碼時沒有錯誤,但是出現控制台錯誤:this.trackArray [0] .points.getVector()不是函數。

這是我調用此函數的代碼

const vecteurPoints: THREE.Vector3[] = this.trackArray[0].points.getVector();

這是功能

public getVector(): Vector3[] {
    const vecArray: Vector3[] = new Array();
    for (const i of this.coordX) {
        vecArray[i].x = this.coordX[i];
        vecArray[i].y = this.coordY[i];
        vecArray[i].z = this.coordZ[i];
    }

    return vecArray;
}

在VS Code中,當我按住Ctrl鍵並單擊函數時,它會將我發送到函數定義。

我通過調用API獲得trackArray。

export class AdminService {
    public constructor( private http: HttpClient ) {  }

    public getTracks(): Observable<Track[]> {
        return this.http.get<Track[]>(this.ADMIN_URL).pipe(catchError(this.handleError<Track[]>("getTracks"))
        );
 }

我這樣稱呼這個班

 this.admin.getTracks().subscribe((track: Track[]) => {this.trackArray = track; });

我發現了我的問題! 因為我獲得了帶有JSON的trackArray,所以我不得不實例化一個新軌道來應用我的方法! 謝謝大家的幫助

如果this.trackArray不包含元素,則可能會發生這種情況。 添加空支票

if(this.trackArray && this.trackArray[0]){
  const vecteurPoints: THREE.Vector3[] = this.trackArray[0].points.getVector();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM