를 단순화하는 타이프 라이터 형식을 내부형 popup

0

질문

그것은 단순화되고 있는 형식과 같이 유형이-도구 설명을 볼 수 있 위에 마우스를 올려놓은 경우에는 변수에 호환되지 않습니?

나는 다음과 같은 코드:

type Debug<T> = {
    [key in keyof T]: T[key]
}

type Chainable<Acc = {}> = {
    option: <K extends string, V>(key: K, value: V) => Chainable<Acc & {[k in K]: V}>;
    get: () => Debug<Acc>;
}

declare const config: Chainable
const result = config
  .option('foo', 123)
  .option('name', 'type-challenges')
  .option('bar', { value: 'Hello World' })
  .get()


type X = typeof result;

위에 마우스를 올려놓은 경우 result 변수가 얻을: [hovering over result variable 1

그러나,위에 마우스를 올려놓은 경우 type X 내가 참조하십시오: hovering over a typeof result

질문:

  1. 왜 사람들은 형식과 같이 다른가? (을 나타내더라도 같은 일)
  2. 는 방법이 있습을 보여주는 형식과 같은 그것과 같이 두 번째 화면?

놀이터

types typescript
2021-11-23 22:28:22
3

최고의 응답

1

당신이 할 수 있는 다음과 같습니다.

type Chainable<Acc = {}> = {
    option: <K extends string, V>(key: K, value: V) => Chainable<{[k in K | keyof Acc]: k extends keyof Acc ? Acc[k] : V}>;
    get: () => Debug<Acc>;
}

기본적으로 이것은 같은 일을 하 고 있으로 무엇을 하고 있지만,더 많은 라운드에 대한 방법입니다.

에 의존하는 대신 & 매개 변수는 오염이 가져 힌트입니다. 할 수 있습 효과적으로 다시 만들 전체가 처음부터.

이를 사용하여 달성 k in K | keyof Acc 키 그러나 그것은 또한 당신이 필요 조건부 형식을 위한 값입니다.

내가 상상이 어쩌면 덜 성능이 뛰어나지만 솔직히 내가 생각하지 않는 것이 대부분을 차이입니다.

놀이터

2021-11-24 03:11:45
0

이것은 기본 차이 type 키워드고 interface 키워드입니다. 인터페이스 이름이 표시됩 도구 설명에 그 이름을 입력하지 않습니다.

2021-11-24 03:36:18
0

그것은 가능한 유틸리티를 만드는 형식을 할 것을 평평하게 자동으로 합니다. 그래서이없는,필요에 의존하여 값들을 분석하면 입력 방법@zecuria 았다.

type Chainable<Acc = {}> = {
    option: <K extends string, V>(key: K, value: V) => Chainable<Acc & {[k in K]: V}>;
    get: () => Util_FlatType<Acc>;
}

type Util_FlatType<T> = T extends object ? { [K in keyof T]: Util_FlatType<T[K]> } : T

enter image description here

Util_FlatType 는 도난당한에서 여기

2021-11-28 15:00:21

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................