일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 백엔드
- 파이썬
- 솔리디티
- 가상화
- 알고리즘
- docker
- 컴퓨터공학
- next.js
- VUE
- CSS
- 이슈
- HTML
- BFS
- 프론트엔드
- 타입스크립트
- AWS
- 자바스크립트
- 이더리움
- JavaScript
- 블록체인
- 백준
- es6
- 쿠버네티스
- TypeScript
- k8s
- kubernetes
- 클라우드
- 리액트
- react
- 웹
Archives
- Today
- Total
즐겁게, 코드
import type 구문으로 명시적으로 타입 불러오기 본문
채널톡의 bezier-react 코드를 리딩하던 중, 낯선 구문을 만나게 되어 찾아보게 되었어요.
import React, {
// 임포트 단계에서 type 키워드를 붙여주는 것이 가능했던가?
// 어떤 기능적 역할을 하는 것이지?
type Ref,
forwardRef,
useMemo,
} from 'react'
바로 import type
구문인데요, 해당 구문을 활용하면 불러오는 대상이 값인지 타입인지를 명시할 수 있답니다.
// model/user.ts
export interface User {
id: string;
name: string;
}
// component.tsx
import { type User } from "@/model/User";
interface Props {
user: User;
}
export default function Home({ user }: Props) {
return (
<>
<div>{user.name}</div>
</>
);
}
반드시 type 키워드를 붙여야만 불러올 요소가 타입으로 인식되는 것은 아니에요.
하지만 이렇게 함으로써, Eslint나 빌드타임을 거치지 않고도 개발자는 해당 요소가 값인지 타입인지를 구분할 수 있게 됩니다.
// HTMLAttributes는 타입으로, useState는 값으로 사용된다.
import { type HTMLAttributes, useState } from "react";
// ❌ 값은 type 키워드를 붙여 사용할 수는 없다.
// import { type useState } from "react";
// ⚠️ 타입은 type 키워드를 붙이지 않고도 사용할 수 있다.
// import { User } from "@/model/user";
// ✅ type 키워드를 사용해 보다 직관적으로 해당 요소가 타입임을 명시할 수 있다.
import { type User } from "@/model/user";
interface Props extends HTMLAttributes<HTMLDivElement> {
user: User;
}
export default function Home({ user }: Props) {
const [open, setOpen] = useState();
return (
<>
<div>{user.name}</div>
</>
);
}
돌려보지 않고도 내용을 추론할 수 있는 좋은 코드를 만들 수 있는 작지만 좋은 습관이라고 생각해,
앞으로는 import type
키워드를 적극 사용해보려 합니다. 🙂
반응형
'🎨 프론트엔드 > Typescript' 카테고리의 다른 글
배열아 꼼짝 마라! - readonly 타입 사용하기 (0) | 2021.12.26 |
---|---|
유틸리티 타입 - Partial, Required, Pick 사용하기 (1) | 2021.06.04 |
타입스크립트에서 이벤트 객체 타입 지정하기 (2) | 2021.05.29 |
타입스크립트로 리액트 컴포넌트 구성해보기 (0) | 2021.05.21 |
tsc 옵션 제대로 사용하기 (0) | 2021.03.17 |
Comments
소소한 팁 : 광고를 눌러주시면, 제가 뮤지컬을 마음껏 보러다닐 수 있어요!
와!! 바로 눌러야겠네요! 😆