나는 다음과 같은 코드를 통해 타이프 라이터를 사용하여 각도 앱 자바 스크립트 기본 배열 객체를 확장하고있다 : utilities.ts확장 배열 각도 구성 요소보기에서 작동하지만 각도 구성 요소 클래스
// --- Extends Array object to include a getIndexBy method. ---
interface Array<T> {
getIndexBy(name: string, value: T): number;
}
// --- Returns the index of an object based on the name and value passed into the method.
Array.prototype.getIndexBy = function(name, value) {
for (let i = 0; i < this.length; i++) {
if (this[i][name] === value) {
return i;
}
}
};
:
파일
파일 :
import { Component } from '@angular/core';
import 'utilities';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'app works!';
items: Array<{ name: string, age: number }> = [{
name: 'steve',
age: 20
}, {
name: 'bob',
age: 12
}, {
name: 'john',
age: 40
}];
constructor() {
console.log(this.items.getIndexBy('age', 20));
// ERROR - Argument of type '20' is not assignable to parameter of type '{ name: string; age: number; }'
}
}
파일 app.component.ts : app.component.html를
<h1>
{{title}}
</h1>
<hr>
{{items.getIndexBy('age', 12)}} <!-- Works as expected -->
{{items.getIndexBy('name', 'john')}} <!-- Works as expected -->
뷰에서 확장 배열 메서드를 사용할 수 있지만 구성 요소 클래스에서는 사용할 수 없습니다.
이 표시됩니다. 네, 제 의도는 getIndexBy 메소드가 두 번째 일반 매개 변수를 허용하도록하는 것입니다. – YOOOEE