TypeScript에 제공되는 2가지 새로운 킬러 기능
타입스크립트 4.7
이upcoming TypeScript version는 언어에 많은 새로운 기능과 개선 사항을 제공하지만 특히 흥미로운 두 가지가 있습니다.
1- Instatiation Expressions
2-
extends
Constraints on infer
Type Variables새로운 기능 가치
당신이 나와 비슷하고 당신과 당신의 동료들에게 훌륭한 수준의 개발자 경험을 제공하는 복잡한 유형 정의를 만드는 것을 좋아한다면, 이러한 유형 정의를 작성하는 방법을 쉽게 해 줄 이 새로운 기능을 절대적으로 알아야 합니다. , 많이.
인스턴스화 표현식
소수의 일반 함수 이상을 작성한 사람이라면 이 새로운 기능이 일부 유형을 사용하기 위해 "형편없는"JS 해결 방법을 작성하지 않아도 되는 기능일 것입니다.
인스턴스화 표현식을 사용하면 "인스턴스화"부분 없이 일반 유형을 얻을 수 있습니다 🤯
4.7 이전:
type Dog = {
name: string
isGoodBoy: boolean;
}
type Cat = {
name: string
}
function getBigPet<T>(pet: T){
return {...pet, big: true}
}
// 1- Need to have a typed param to pass 👎
const dog: Dog = {name: "Jake", isGoodBoy: true}
// 2- Need to create an arrow function 👎
const getBigDog = () => getBigPet(dog);
이 곧 출시될 버전 이전에는 일반 함수의 유형을 활용할 방법이 없었기 때문에 많은 사람들이 불필요한 JS 코드를 작성하여 해결 방법을 만들었습니다. ❌
4.7 이후
type Dog = {
name: string
isGoodBoy: boolean;
}
type Cat = {
name: string
}
function getBigPet<T>(pet: T){
return {...pet, big: true}
}
// Can "instantiate" on the fly ✅
const getBigDog = getBigPet<Dog>;
// No need to bring in any extra types ✅
type BigCat = ReturnType<typeof getBigPet<Cat>>
따라서 인스턴스화 표현식이 제공하는 것은 어떤 종류의 해결 방법이나 추가 JS 코드 생성 없이 일반 함수의 유형을 검색할 수 있는 단순성입니다.
장점
ReturnType
가 이제 막 일류 시민이 되었습니다. 유추 유형 변수에 대한 제약 조건 확장
이 새로운 기능은 유추된 유형 제약 조건에 따라 누구나 덜 장황한 유형을 작성하는 데 도움이 될 것입니다.
이것은 기본적으로 우리(개발자)가 일부 조건이 충족될 때 "거짓"논리 경로로 즉시 이동하기 위해 JavaScript와 같은 언어에서 여러 번 사용하는 초기
return
문 역할을 합니다.4.7 이전
// A type that returns the First and Last elements of the Number type
// 😔😔😔 This feels overwhelming...
type FirstAndLastNumber<T extends any[]> = T extends [
infer Head,
...any,
infer Tail
]
? Head extends number
? Tail extends number
? [Head, Tail]
: never
: never
: never;
예정된 이 기능 이전에는 유추된 유형에 대해 "조기 확인"을 수행할 방법이 없었으며, 그로 인해 매우 장황하고 "무서운"유형을 생성하게 되었습니다. ❌
4.7 이후
// The "same" type as before 🤯🤯🤯
type FirstAndLastNumber<T extends any[]> = T extends [
// 1- Add the extends constraint here
infer Head extends number,
...any,
// 2- Add the extends constraint here
infer Tail extends number
] ? [Head, Tail]: never;
extends
infer
유형 변수에 대한 제약 조건은 유추된 유형 변수에 의존하는 유형을 정의하는 프로세스를 실제로 단순화합니다. 이 기능은 구문 변경 이상으로 "실제 프로그래밍".장점
1- 깨끗하고 덜 장황한 유형;
2- 다른 사람들이 이 "괴물"유형을 접할 수 있는 복잡성 장벽을 낮춥니다.
3- TypeScript 컴파일러는 더 일찍 반환할 수 있기 때문에 더 빠를 것입니다.
결론
TypeScript의 4.7 버전 새 기능을 활용하면 유형 정의의 복잡성을 크게 낮출 수 있으므로 누구나 쉽게 해당 유형을 이해하고 개발할 수 있습니다.
추신 TypeScript Playground에서 이러한 새로운 기능을 이미 사용해 볼 수 있습니다.
TypeScript 모범 사례나 일반적인 웹 개발에 대해 읽고 싶다면 저를 팔로우하세요!
Reference
이 문제에 관하여(TypeScript에 제공되는 2가지 새로운 킬러 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/pffigueiredo/2-new-killer-features-coming-to-typescript-3b5j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)