interface sample {
x: number
y: number
z: number
}
type sampleXY = Omit<sample, "z">
const given: sample = {
x: 1, y: 2, z: 3
}
const filtered: sampleXY = given;
console.log(filtered);
내가 원한 결과는 x,y인데
실제 결과는 x,y,z임
JS로 트랜스파일돼서 타입이 박살나는건가?
도와줘 ... 못찾겠어
Omit이 다이나믹하게 프로퍼티 빼주고 하는게 아님. Assign할때만 검사하는거자너
비구조화 할당으로 뺄거 명시하고 나머지 ...rest로 받으면 되지않음?
const {z, ...rest} = given 이렇게하면 rest에 x,y만 들어갈텐데
타입이 박살난게 아니라 코드에 잘못된 부분이 없고 님이 기대하는 결과가 잘못된거
구조적 타이핑이라 interface를 쓸 때 다른 언어랑 동작이 다름
그리고 타이핑으로 런타임에 영향을 줄 수 없음