Typescript: μœ ν˜• μˆœμ„œλ₯Ό μœ μ§€ν•˜μ§€ μ•ŠλŠ” μœ λ‹ˆμ˜¨ + 맀핑 된 λ°°μ—΄ μœ ν˜•μœΌλ‘œ λ°°μ—΄ μΊμŠ€νŒ…

에 λ§Œλ“  2019λ…„ 05μ›” 07일  Β·  1논평  Β·  좜처: microsoft/TypeScript


TypeScript 버전 : 3.4.0-dev.201xxxxx


검색어:

맀핑 된 μœ ν˜• ν‚€ μˆœμ„œ 손싀

μ•”ν˜Έ

type Initial = [1, 2, 3, 4]

type FindReplace<T extends any[], Find, Replace> = {
  [K in keyof T]: T[K] extends Find ? Replace : T[K]
}

// Map over array and replace '2'
type ResultArray = FindReplace<Initial, 2, 'was 2'>
// => [1, "was 2", 3, 4]

// Now accessing the array values using [number], the type
// order is lost. This matters because now when the union is later
// cast as a intersection, the types are in the wrong order
type Result = ResultArray[number]
// => 1 | 3 | 4 | "was 2

μ˜ˆμƒλ˜λŠ” λ™μž‘ :

μœ ν˜•μ— λŒ€ν•œ 맀핑은 ν‚€ μˆœμ„œλ₯Ό μœ μ§€ν•΄μ•Όν•©λ‹ˆλ‹€.

μ‹€μ œ 행동 :

μœ ν˜•μ— λŒ€ν•œ 맀핑은 "μœ ν˜•"을 μœ μ§€ν•˜μ§€λ§Œ T[keyof T] μ—°μ‚°μžλ₯Ό μˆ˜ν–‰ν•˜λ©΄ ν‚€ μˆœμ„œκ°€ μ†μ‹€λ©λ‹ˆλ‹€.

κ΄€λ ¨ 문제:

Question

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ—°ν•© λͺ…령은 당신이 무엇을 λ―Ώμ–΄μ•Ό ν•  것이 μ•„λ‹™λ‹ˆλ‹€. @RyanCavanaugh λŠ” νŠœν”Œμ— λŒ€ν•œ κ³΅μš©μ²΄κ°€ μ—¬κΈ° μ—μ„œ λ…Όμ˜ 될 λ•Œ 이것을 μ–ΈκΈ‰ν–ˆμŠ΅λ‹ˆλ‹€.

첫째, λ…Έμ‘° μ§ˆμ„œλŠ” μš°λ¦¬κ°€ κ΄€μ°° ν•  수 μžˆλ„λ‘ ν—ˆμš© ν•  μˆ˜μžˆλŠ” 것이 μ•„λ‹™λ‹ˆλ‹€. λ‚΄λΆ€μ μœΌλ‘œ 톡합은 μ •λ ¬ 된 μœ ν˜• λͺ©λ‘μœΌλ‘œ μ €μž₯되며 (μ΄λŠ” 이듀 κ°„μ˜ 관계λ₯Ό μ‹ μ†ν•˜κ²Œ κ²°μ •ν•˜λŠ” μœ μΌν•œ 효율적인 방법), μ •λ ¬ ν‚€λŠ” μ μ§„μ μœΌλ‘œ μƒμ„±λ˜λŠ” λ‚΄λΆ€ IDμž…λ‹ˆλ‹€. μ΄κ²ƒμ˜ μ‹€μ§ˆμ μΈ κ²°κ³ΌλŠ” 맀우 μœ μ‚¬ν•œ 두 ν”„λ‘œκ·Έλž¨μ΄ 맀우 λ‹€λ₯Έ κ²°ν•© μˆœμ„œλ₯Ό 생성 ν•  수 있으며, μ–Έμ–΄ μ„œλΉ„μŠ€ μ»¨ν…μŠ€νŠΈμ—μ„œ κ΄€μ°°λ˜λŠ” λ™μΌν•œ 결합은 λͺ…λ Ή 쀄 μ»¨ν…μŠ€νŠΈμ—μ„œ κ΄€μ°° 될 λ•Œμ™€ λ‹€λ₯Έ μˆœμ„œλ₯Ό κ°€μ§ˆ 수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. μœ ν˜•μ΄ μƒμ„±λ˜λŠ” μˆœμ„œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. λ‹¨μˆœνžˆ ν™•μΈλ˜λŠ” μˆœμ„œμž…λ‹ˆλ‹€.

>λͺ¨λ“  λŒ“κΈ€

μ—°ν•© λͺ…령은 당신이 무엇을 λ―Ώμ–΄μ•Ό ν•  것이 μ•„λ‹™λ‹ˆλ‹€. @RyanCavanaugh λŠ” νŠœν”Œμ— λŒ€ν•œ κ³΅μš©μ²΄κ°€ μ—¬κΈ° μ—μ„œ λ…Όμ˜ 될 λ•Œ 이것을 μ–ΈκΈ‰ν–ˆμŠ΅λ‹ˆλ‹€.

첫째, λ…Έμ‘° μ§ˆμ„œλŠ” μš°λ¦¬κ°€ κ΄€μ°° ν•  수 μžˆλ„λ‘ ν—ˆμš© ν•  μˆ˜μžˆλŠ” 것이 μ•„λ‹™λ‹ˆλ‹€. λ‚΄λΆ€μ μœΌλ‘œ 톡합은 μ •λ ¬ 된 μœ ν˜• λͺ©λ‘μœΌλ‘œ μ €μž₯되며 (μ΄λŠ” 이듀 κ°„μ˜ 관계λ₯Ό μ‹ μ†ν•˜κ²Œ κ²°μ •ν•˜λŠ” μœ μΌν•œ 효율적인 방법), μ •λ ¬ ν‚€λŠ” μ μ§„μ μœΌλ‘œ μƒμ„±λ˜λŠ” λ‚΄λΆ€ IDμž…λ‹ˆλ‹€. μ΄κ²ƒμ˜ μ‹€μ§ˆμ μΈ κ²°κ³ΌλŠ” 맀우 μœ μ‚¬ν•œ 두 ν”„λ‘œκ·Έλž¨μ΄ 맀우 λ‹€λ₯Έ κ²°ν•© μˆœμ„œλ₯Ό 생성 ν•  수 있으며, μ–Έμ–΄ μ„œλΉ„μŠ€ μ»¨ν…μŠ€νŠΈμ—μ„œ κ΄€μ°°λ˜λŠ” λ™μΌν•œ 결합은 λͺ…λ Ή 쀄 μ»¨ν…μŠ€νŠΈμ—μ„œ κ΄€μ°° 될 λ•Œμ™€ λ‹€λ₯Έ μˆœμ„œλ₯Ό κ°€μ§ˆ 수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. μœ ν˜•μ΄ μƒμ„±λ˜λŠ” μˆœμ„œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. λ‹¨μˆœνžˆ ν™•μΈλ˜λŠ” μˆœμ„œμž…λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰