Java는 interface가 런타임에도 살아있어서 reflection이 가능한것같은데
TS는 런타임에 타입정보 다 사라져서 문제더라고..
그래서 이거 어케처리할까 하는데
1. abstract class로 만들기
2. interface와 string Token으로 만들기
string token은 너무 비직관적인것같아서 (spring 관점에서 보면)
abstract class로 하려는데 보통 뭘로하나?
Java는 interface가 런타임에도 살아있어서 reflection이 가능한것같은데
TS는 런타임에 타입정보 다 사라져서 문제더라고..
그래서 이거 어케처리할까 하는데
1. abstract class로 만들기
2. interface와 string Token으로 만들기
string token은 너무 비직관적인것같아서 (spring 관점에서 보면)
abstract class로 하려는데 보통 뭘로하나?
타입스크립트가 뭐라고 생각하고 런타임을 말하고 있뉘?
문제라는 표현때문에 오해를 산듯. TS의 동작때문에 문제라기보단 내가 원하는 상황을 달성못하는게 맞음. 내가 원하는 상황은 Java처럼 interface 정보로 reflection이 가능한것.
근데 그게 불가하니 대체할 수 있는게 class vs. string token인데, string token쓰자니 너무 느슨해지는것같아서 싫고 abstract class를 만들어서 그걸로 토큰 삼는게 그나마 낫지않냐는 소리.
abstract class로 가능한 방법이 있음?
provide token말하는거 Proive token을 string으로 쓸거냐 아니면 class로 쓸거냐인데 class가 추상역할만해야하니까 abstract class로 만든다는거임.
토큰은 추상클래스고 타입은 그냥 인터페이스 쓰겠단건감
interface 하나로 둘다 가능하면 좋은데 (Java처럼) 그게 ts에서는 불가하니 타입도 토큰도 다 abstract class로 퉁치겠다는거지.
그렇게 안하면 interface로 타입정의하고 토큰은 string으로 만들어서 @Inject()이런식으로 하거나 하드라고.. 근데 이스타일은 좀 사파같아서 별로안좋아함..
근데 이게 맞나...? 다들 어떻게 하지 궁금해서 질문글 올려봄
되면 그렇게 가면댈듯 근데 안대는걸로암
나는 그렇게 쓰고있는데 안되진않음. 근데 이런거 검색해봐도 그닥 어떤 프랙티스가 검색이 안되어서.. 1) { provide: AbstractClass, useClass: Implclass} 2) constructor( myClasss :AbstractClass )
그건 걍 의존성역전을 잘 쓰는애들이 별로 없어서 그럼 노드쪽에서. 추상클래스로 되면 걍 그렇게 쓰는게 젤 무난할듯
한가지 애매한 부분은 class라서 다중상속이 불가능하고 extends 문법을 써서 '상속'같은 느낌을 준다는게 문제이긴하네. 실제로 원했던건 class를 쓰고싶은게 아니라 interface역할을 하는 class를 찾았을 뿐인건데 말이야.
일단 한번 써보고 나중에 바꾸던지 해야겠네
고민들어줘서 감사~