TypeScript3.4RC의 변경 사항 요약
12034 단어 TypeScript
Announcing TypeScript 3.4 RC
총결산
-- 내부 플래그
- watch 모드에서 마지막 컴파일의 상태에 따라 영향 범위의 유형만 검사합니다.
v3.4에 --incremental 로고를 추가합니다. --watch 모드의 정상적인 컴파일이 아니더라도
마지막 컴파일의 상태를 저장하면 구축 시간을 단축할 수 있습니다.
기본적으로 이전 상태는 ./lib/.tsbuildinfo
로 저장됩니다.(--tsBuildInfoFile에서도 변경할 수 있음)
Readonly 주변 개선 사항
ReadonlyArray형 단순화 표현
통상적인 배열은 number[]
과 Array<number>
등 두 가지 표기 방법이 있다.
Readonly Array 유형에 관하여 Readonly<number>
및 일반적인 표기만 사용
v3.4부터readonly number[]
는 일반적인 배열과 같은 짧은 손 표시가 가능하다.
readonly 메타그룹
상기와 같은 문법은 v3.4에서 다시 대입할 수 없는 원조의 유형을 나타낼 수 있다.const readonlyTuple: readonly [string, number] = ['hoge', 1]
// error
readonlyTuple[0] = 'fuga'
readonly 수식자가 있는 맵 형식을 자동으로 변환합니다
appedTypes에 readonly 수식자를 부여하는 이념에서
수조나 모듈을object 형식이 아닌 일반 모델로 정의할 때의 행동이 v3.4에서 변경되었습니다.
위의 두 가지 유형으로 자동 변환될 것 같습니다.// lib.d.ts
type Readonly<T> = {
readonly [K in keyof T]: T[K]
}
// before v3.4
// type B is number[]
type B = Readonly<number[]>
// type C is [string, boolean]
type C = Readonly<[string, boolean]>
// v3.4
// type B is readonly number[] (ReadonlyArray<number>)
type B = Readonly<number[]>
// type C is readonly [string, boolean]
type C = Readonly<[string, boolean]>c
반면,readonly 맵 형식 제거
다음 자동 변환이 작용합니다.// lib.d.ts
type Writable<T> = {
-readonly [K in keyof T]: T[K]
}
// number[]
type B = Writable<readonly number[]>;
// [string, boolean]
type C = Writable<readonly [string, boolean]>;
const 단언
v3.4에서 ~ as const
까지의 문법이 추가되었습니다.
우선, 다음 상황
"Hello"라는 글자 자체가 "Hello"형입니다.
let에서 성명한 것이기 때문에string형으로 추론하여 다시 대입할 수 있도록 합니다.// Type string
let x = 'hello'
x = 'world'
다음은 const 단언을 사용할 때
상술한 바와 달리, 추론은string형이 아닌'hello'형이다
ReadonlyArray형 단순화 표현
통상적인 배열은
number[]
과 Array<number>
등 두 가지 표기 방법이 있다.Readonly Array 유형에 관하여
Readonly<number>
및 일반적인 표기만 사용v3.4부터
readonly number[]
는 일반적인 배열과 같은 짧은 손 표시가 가능하다.readonly 메타그룹
상기와 같은 문법은 v3.4에서 다시 대입할 수 없는 원조의 유형을 나타낼 수 있다.
const readonlyTuple: readonly [string, number] = ['hoge', 1]
// error
readonlyTuple[0] = 'fuga'
readonly 수식자가 있는 맵 형식을 자동으로 변환합니다
appedTypes에 readonly 수식자를 부여하는 이념에서
수조나 모듈을object 형식이 아닌 일반 모델로 정의할 때의 행동이 v3.4에서 변경되었습니다.
위의 두 가지 유형으로 자동 변환될 것 같습니다.
// lib.d.ts
type Readonly<T> = {
readonly [K in keyof T]: T[K]
}
// before v3.4
// type B is number[]
type B = Readonly<number[]>
// type C is [string, boolean]
type C = Readonly<[string, boolean]>
// v3.4
// type B is readonly number[] (ReadonlyArray<number>)
type B = Readonly<number[]>
// type C is readonly [string, boolean]
type C = Readonly<[string, boolean]>c
반면,readonly 맵 형식 제거다음 자동 변환이 작용합니다.
// lib.d.ts
type Writable<T> = {
-readonly [K in keyof T]: T[K]
}
// number[]
type B = Writable<readonly number[]>;
// [string, boolean]
type C = Writable<readonly [string, boolean]>;
const 단언
v3.4에서
~ as const
까지의 문법이 추가되었습니다.우선, 다음 상황
"Hello"라는 글자 자체가 "Hello"형입니다.
let에서 성명한 것이기 때문에string형으로 추론하여 다시 대입할 수 있도록 합니다.
// Type string
let x = 'hello'
x = 'world'
다음은 const 단언을 사용할 때상술한 바와 달리, 추론은string형이 아닌'hello'형이다
// Type 'hello'
let x = 'hello' as const
// Type 'readonly [10, 20]'
let y = [10, 20] as const
// Type '{ readonly text: "hello" }'
let z = { text: "hello" } as const
※ *.tsx 이외의 파일에서도 let x = <const>'hello'
이러한 문법을 사용할 수 있다또한 const 단언은 문자에만 사용할 수 있는 것 같습니다.
// error
let a = (Math.random() < 0.5 ? 0 : 1) as const
globalThis 지원
ECMAScript 비율 정보globalThis(2019/3/16 현재 Stage3)
v3.4에서 형식 검사 지원을 추가했습니다.// in a global file
const hoge = 'hoge'
// error
globalThis.hoge = 'fuga'
하지만 TypeScript는 globalThis를 변환하지 않기 때문에
지원하지 않는 브라우저에서 이동하려면polyfill을 넣어야 합니다.
이름 매개 변수 재구성 기능
함수의 매개 변수가 추가되었고namedparameter로 변환할 때의 재구성 기능이 추가되었습니다.
아래gif를 보시면 알 수 있습니다.
※ 이미지 대여방송 페이지
파괴적 변경
다음 두 가지를 방송했습니다.
이전에는 번역을 통과했지만, 단지 번역 오류가 있을 뿐이다
컴파일된 코드는 바뀌지 않을 것 같습니다.
최고급this 유형
최고급this 타입은any타입입니다.
v3.4에서 globalThis형으로.
이전에 컴파일된 다음 코드
v3.4에서 noImplicitAny 옵션이 활성화된 경우
globalThis 형식에 정의되지 않은 hoge 속성이 은식any 형식으로 오류가 발생합니다.this.hoge = 'hoge'
함수 유형 추리 개선의 영향
함수의 유형 추리가 개선되었는데, 번역 오류가 있었다고 한다.
예를 들어 다음 코드의 경우
x.value는 이전에 {}[]
형으로 추정되었습니다.
v3.4에서 number[]
형으로 추정된다.
따라서 x.value에서pushnumber형 이외의 코드는 형 오류가 될 수 있습니다.declare function compose<T, U, V>(f: (arg: T) => U, g: (arg: U) => V): (arg: T) => V;
function list<T>(x: T) { return [x]; }
function box<T>(value: T) { return { value }; }
let f = compose(list, box);
let x = f(100)
Reference
이 문제에 관하여(TypeScript3.4RC의 변경 사항 요약), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gtnao0219/items/8b3dd18dffe487208b97
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// in a global file
const hoge = 'hoge'
// error
globalThis.hoge = 'fuga'
함수의 매개 변수가 추가되었고namedparameter로 변환할 때의 재구성 기능이 추가되었습니다.
아래gif를 보시면 알 수 있습니다.
※ 이미지 대여방송 페이지
파괴적 변경
다음 두 가지를 방송했습니다.
이전에는 번역을 통과했지만, 단지 번역 오류가 있을 뿐이다
컴파일된 코드는 바뀌지 않을 것 같습니다.
최고급this 유형
최고급this 타입은any타입입니다.
v3.4에서 globalThis형으로.
이전에 컴파일된 다음 코드
v3.4에서 noImplicitAny 옵션이 활성화된 경우
globalThis 형식에 정의되지 않은 hoge 속성이 은식any 형식으로 오류가 발생합니다.this.hoge = 'hoge'
함수 유형 추리 개선의 영향
함수의 유형 추리가 개선되었는데, 번역 오류가 있었다고 한다.
예를 들어 다음 코드의 경우
x.value는 이전에 {}[]
형으로 추정되었습니다.
v3.4에서 number[]
형으로 추정된다.
따라서 x.value에서pushnumber형 이외의 코드는 형 오류가 될 수 있습니다.declare function compose<T, U, V>(f: (arg: T) => U, g: (arg: U) => V): (arg: T) => V;
function list<T>(x: T) { return [x]; }
function box<T>(value: T) { return { value }; }
let f = compose(list, box);
let x = f(100)
Reference
이 문제에 관하여(TypeScript3.4RC의 변경 사항 요약), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gtnao0219/items/8b3dd18dffe487208b97
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
this.hoge = 'hoge'
declare function compose<T, U, V>(f: (arg: T) => U, g: (arg: U) => V): (arg: T) => V;
function list<T>(x: T) { return [x]; }
function box<T>(value: T) { return { value }; }
let f = compose(list, box);
let x = f(100)
Reference
이 문제에 관하여(TypeScript3.4RC의 변경 사항 요약), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gtnao0219/items/8b3dd18dffe487208b97텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)