Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- cleancode
- 변수
- react
- node.js
- CSS
- media query
- 그럼에도불구하고
- HTML
- react-router-dom
- github
- JavaScript
- 프론트엔드
- 자바
- webpack
- 코딩테스트
- coding
- 그럼에도 불구하고
- 자바문제풀이
- 반응형 페이지
- JS
- frontend
- node
- max-width
- @media
- redux
- TypeScript
- 코드업
- java
- git
- Servlet
Archives
- Today
- Total
그럼에도 불구하고
[TypeScript] 인터페이스의 선택적 프로퍼티 본문
인터페이스의 선택적 프로퍼티에 대해 알아보겠습니다.
[ 선택적 프로퍼티 (Optional Properties) ]
인터페이스의 모든 프로퍼티가 필요한 것은 아닙니다. 어떤 조건에서만 존재하거나 아예 없을 수도 있습니다. 선택적 프로퍼티들은 객체 안의 몇 개의 프로퍼티만 채워 함수에 전달하는 "option bags" 같은 패턴을 만들 때 유용합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | interface SquareConfig { color?: string; width?: number; } function createSquare(config: SquareConfig): {color: string; area: number} { let newSquare = {color:'white', area:100}; if(config.color) { newSquare.color = config.color; } if(config.width) { newSquare.area = config.width * config.width; } return newSquare; } let mySquare = createSquare({color:"black"}); console.log(mySquare); | cs |
선택적 프로퍼티를 가지는 인터페이스는 다른 인터페이스와 비슷하게 작성되고, 선택적 프로퍼티는 선언에서 프로퍼티 이름 끝에?를 붙여 표시합니다.
선택적 프로퍼티의 이점은 인터페이스에 속하지 않는 프로퍼티의 사용을 방지하면서, 사용 가능한 속성을 기술하는 것입니다. 예를 들어, createSquare안의 color 프로퍼티 이름을 잘못 입력하면, 오류 메시지로 알려줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | interface SquareConfig { color?: string; width?: number; } function createSquare(config: SquareConfig): { color: string; area: number } { let newSquare = {color: "white", area: 100}; if (config.clor) { // Error: Property 'clor' does not exist on type 'SquareConfig' newSquare.color = config.clor; } if (config.width) { newSquare.area = config.width * config.width; } return newSquare; } let mySquare = createSquare({color: "black"}); | cs |
'TypeScript > TypeScript basics' 카테고리의 다른 글
[TypeScript] 유니온 타입이란? (1) | 2023.05.19 |
---|---|
[TypeScript] 리터럴 타입이란? (0) | 2023.05.19 |
[TypeScript] 이넘(Enum)의 특징 (1) | 2023.05.16 |
[TypeScript] TypeScript로 Google Maps API 사용하기 (0) | 2023.05.13 |
[TypeScript] extends와 implements의 차이 (0) | 2023.05.04 |
Comments