동일한 수퍼 클래스에서 상속하는 두 개의 클래스가 있습니다.
class Vehicle {}
class Bus extends Vehicle {}
class Truck extends Vehicle {}
두 가지 유형의 배열이 있습니다.
var buses : Bus[];
var trucks : Truck[];
및 수퍼 클래스 유형의 배열을받는 함수.
function checkOil(vehicles : Vehicle[]) {}
여러 대의 버스 나 트럭을 통과 할 수는 있지만 병합하여 함께 통과 할 수는 없습니다.
function checkOil(buses.concat(trucks));
//error TS2082: Supplied parameters do not match any signature of call target:
Types of property 'pop' of types 'Bus[]' and 'Track[]' are incompatible:
이러한 배열을 어떻게 병합합니까?
편집 : TypeScript 운동장
캐스팅 <Vehicle[]>
이 작동해야합니다.
function checkOil(vehicles : Vehicle[]) {}
checkOil((<Vehicle[]>buses).concat(trucks));
타이프는 캐스팅됩니다 (busses)
에 Vehicle[]
, 같은 나머지와 함께 할 것입니다
예를 들어 이것은 (콘솔에서) 두 개의 객체를 반환합니다-Vehicles
class Vehicle
{
public Type: string;
}
class Bus extends Vehicle
{
public A: string;
}
class Truck extends Vehicle
{
public B: number
}
var buses: Bus[] = [];
buses.push({Type: 'Bus', A : 'A1'});
var trucks: Truck[] = [];
trucks.push({ Type: 'Truck', B: 1 });
function checkOil(vehicles: Vehicle[]) : Vehicle[]
{
return vehicles;
}
var result = checkOil((<Vehicle[]>buses).concat(trucks));
console.log(result)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다