보통 타입스트립트의 type을 지정해줄 때 인터페이스를 정의한 후 그 안에 모든 타입을 넣어준다.
그런데 그 인터페이스에서 어떤 변수 하나의 데이터를 정제해서 타입을 다르게 다시 정의하고 싶은 경우나
인터페이스의 어떤 변수를 제외하고 다른 변수들을 추가하고 싶을 때는
전에 썼던 인터페이스 정의 코드를 다시 복붙해서 쓰기에는 하드코딩이라 좀 망설여진다...
만약에 이런 타입 정의 인터페이스가 있다고 하자.
interface Data {
id: number
name: string
place: string[]
}
place 데이터의 타입을 string[]에서 그냥 string 으로 바꿔서 다시 인터페이스
interface DataResult extends Data
처음에 나는
// 이렇게 하면 extends 옵션을 쓸 수 없다는 타입 에러가 뜸.
interface DataResult extends Data {
id: number
name: string
place: string
}
이라고 했지만 extends 로 인터페이스를 상속해주면 그 안의 속성의 타입을 변경할 수는 없었다.
그래서 Omit 으로 해당 타입을 빼고 인터페이스를 다시 정의하는 방법을 사용했다.
// Data 인터페이스에서 place 속성을 제외한 것으로 AnotherData를 재정의
type AnotherData = <Omit Data, 'place'>
그거를 그냥 이제 이렇게 쓰면 된다.
interface DataResult extends Omit<Data, 'a'> {
id: number
name: string
place: string
}
참고문서링크:
https://stackoverflow.com/questions/48215950/exclude-property-from-type
'typescript' 카테고리의 다른 글
23.01.29 Union Type (0) | 2023.01.29 |
---|---|
22.02.24 default parameter (0) | 2022.02.24 |
21.12.23 [typescript] setState props로 넘길 때 Dispatch (1) | 2021.12.23 |
21.12.22 형식의 인수는 'string' 형식의 매개 변수에 할당될 수 없습니다.ts(2345) (0) | 2021.12.23 |
21.12.12 'Element[]' 형식에 'ReactElement<any, any>' 형식의 type, props, key 속성이 없습니다. (0) | 2021.12.12 |