Generic in Function 강의 instantiator 질문입니다.
414
작성한 질문수 5
Generic in Function (함수에서 제너릭 사용하기) 강의 내용에서의 질문입니다.
class Car {
brand: string;
codeName: string;
constructor(brand: string, codeName: string) {
this.brand = brand;
this.codeName = codeName;
}
}
function instantiator<T extends { new(...args: any[]): {} }>(classObject: T,
...args: any[]) {
return new classObject(...args);
}
console.log(instantiator(Car, 'BMW', 1111));Car의 경우 생성자의 codeName 인자의 타입이 string인데
...args의 타입을 any[]로 지정했기 때문에
instantiator(Car, 'BMW', 1111)에서 codeName에 number값을 넣어도 오류가 발생하지 않았습니다.
물론 단순히 할당하기만 하는 코드이기 때문에 런타임에서도 오류가 발생하지는 않을 것 입니다.
좀 더 정확한 타입 체킹을 할 수 있도록 위 케이스에서 클래스 생성자의 인자 타입까지 반영해서 체크하는 instantiator를 작성할 수 있을까요?
답변 1
0
안녕하세요!
아래처럼 말씀이실까요?

감사합니다!
0
안녕하세요 저도 비슷한 문제로 고민하고 있었는데요
인자값도 인자값인데 결과값을 사용하려고 할 때 어떻게 해야될 지 고민중이라 질문드립니다.
function instantiator<T extends {new (...args: any[]) : {}}>(constructor: T, ...args: any[]){
return new constructor(...args);
}
function instantiator2<T extends {new (...args: any[]) : {name:any, age:any}}>(constructor: T, ...args: any[]){
return new constructor(...args);
}
const idol1 = instantiator2(Idol,'name', 19);
const car1 = instantiator(Car,'name', '19');
console.log(idol1);
console.log(idol1.age);
console.log(idol1.name);
console.log(car1);이런 식으로 결과값 오브젝트에 직접 파라미터를 박아주면 값을 사용할 수 있었긴 했는데 이러면 제너릭을 사용하는 의미를 못 느끼겠어서 해결할 방법이 있는지 궁금해요.
0
제너릭을 사용하는 의미를 못느낀다는게 어떤 말씀이신지 잘 모르겠습니다. 제너릭을 사용할때 제너릭에 해당되는 정의는 어디서든 정의를 해둬야합니다. {name:any, age:any} 타입을 상속받는 타입을 {name:any, age:any} 정의 없이 사용하는 방법은 존재하지 않습니다. 민종님이 생각하는 '제너릭이 의미 있어지는' 경우를 예제로 작성 해주세요.
ts강의 42. override 마지막즘 질문
0
45
1
25. js array의 문제점 4:55쯤 질문입니다
0
31
1
union 기본기 7분 53초 질문 드립니다.
0
119
2
Equality Narrowing 관련 질문
0
120
2
tsconfig.json 설명
0
125
2
환불 관련 질문 드립니다.
0
181
1
재너릭이랑 any 차이가 뭔가요?
0
222
2
리플렉션과 데코레이터 사용시 의문점
0
136
2
변수의 선언이 중복되었다고 할 때
0
165
2
type 으로 함수의 형식을 정의하고 함수를 정의할 때
0
148
1
declare 키워드가 가끔 나오던데 이건 뭔가요?
0
152
2
class가 값이 될 수 있다는 말을 이해하기 어렵습니다.
0
128
1
null값의 타입은 object 아닌가요?
0
189
1
타입? 인터페이스? 질문있습니다
0
148
1
type functionOnly = Extract<string| (()=> void), Function> 의 의미
0
171
2
npm install cache error
0
206
1
12_experimental_decorator, class decorator
0
132
1
9_class/7_override.ts, super 키워드 질문
0
212
2
강의 계획이 궁금합니다!
0
290
1
instantiator 질문
0
152
1
따라하는데 에러 생기네요
1
398
2
webstorm에서 ts-node 설치해도 문제가 발생하고 있습니다.
0
489
3
infer를 사용한 type의 쓰임새
0
133
1
혹시 수업하면서 작성된 코드는 따로 받아 볼 수 없나요?
0
207
1





