TypeScript λ²μ : 2.1.0-dev.20160912
μνΈ
// A *self-contained* demonstration of the problem follows...
const types = {
test: <'test'>'test',
test2: 'test2' as 'test2'
} // type: {test: string, test2:string}
let a = <'test'>'test' // type string
μλ§λ κ΄λ ¨μ΄ μμ΅λλ€ : https://github.com/Microsoft/TypeScript/pull/10676
μ, μ΄κ²μ # 10676κ³Ό κ΄λ ¨μ΄ μμ΅λλ€. μ΄μ μλ λ¬Έμμ΄ λ¦¬ν°λ΄μ΄ νΉμ "리ν°λ΄ 컨ν μ€νΈ"(μ : μ ν μ΄μ€ μ μ΄ν)μμλ§ λ¦¬ν°λ΄ μ νμ κ°μ§λ©° κ°μ²΄ 리ν°λ΄ μμ±μ μ μΆ λ μ νμΌλ‘ μ νν μ νμ ννμμ μ¬μ©νμ΅λλ€. μ΄μ λ¬Έμμ΄ λ¦¬ν°λ΄μλ νμ 리ν°λ΄ μ νμ΄ μμΌλ©° λμ λ³κ²½ κ°λ₯ν μμΉ (μ : κ°μ²΄ 리ν°λ΄ μμ±)μ λν΄ μ μΆ λ λ _widen_ μ νμ΄ μ§μ λ©λλ€. λ°λΌμ κ·νμ μμμ μ ν μ΄μ€ μ μ (a) λ¬Έμμ΄ λ¦¬ν°λ΄μ΄ μ΄λ―Έ 리ν°λ΄ μ νμ΄λ―λ‘ (b) μ ν μ΄μ€ μ μ΄ν μ 체 ννμμ κ²°κ³Όλ₯Ό λνκΈ° λλ¬Έμ ν¨κ³Όκ° μμ΅λλ€.
λ λμ μ΄μ λ²μ κ³Όμ νΈνμ±μ μν΄ μ΄λμ λΌμ΄μ ννμμ΄ μ ν μ΄μ€ μ μΌ λ μΆλ‘ λ μ νμ λ νμ§ _not_ κ³ λ €ν μ μμ΅λλ€. κ²°κ΅, κ·Έλ μ§ μμΌλ©΄ μ ν μ£Όμ₯μ μμ μ΄ λ¬΄μμ λκΉ?
@ahejlsberg μλ΅
μ΄λμ λΌμ΄μ ννμμ΄ νμ μ΄μ€ μ μΌ λ μΆλ‘ λ νμ μ λνλ κ²μ _not_ κ³ λ €ν μ μλ€λ©΄ μ’μ κ²μ λλ€. κ·Έλ¦¬κ³ λμν©λλ€. μ΄κ²μ΄ νμ μ΄μ€ μ μ μμ μ λλ€. :)
κ·Έκ²μμ΄ μλμ λ©μΆ λ λ€λ₯Έ μΌλ°μ μΈ κ²½μ°λ λ€μκ³Ό κ°μ΅λλ€.
function test(style: { align: 'left' | 'right', size: number }) {
}
const style = {
align: 'left' as 'left',
size: 5
}
test(style)
리ν°λ΄ μ ν https://github.com/Microsoft/TypeScript/issues/10195μ λν κ΅¬λ¬Έμ΄ λμμ΄ λ μ μμ§λ§ νμ€μ΄ λ μ§ νμ€νμ§ μμ΅λλ€.
λͺ¨λ κ²μ κ°μ¬ν©λλ€
@wallverb λμν©λλ€. _some_ νμμ ꡬ문μ μ¬μ©νμ¬ λͺ μ μ μΌλ‘ μ νμ λͺ μνμ§ μκ³ νμ₯μ μνμ§ μμμ λνλ΄λ κ²μ΄ μ’μ΅λλ€. κ·Έλ¬λ μ΄μ¨λ μ΄μ λ²μ κ³Όμ νΈνμ±μ μν΄ μ°λ¦¬λ νμ λ¨μΈμ΄ κ·Έ μλ―Έλ₯Ό κ°λλ‘ νμ©ν΄μΌν©λλ€.
κ°μ₯ μ μ©ν λκΈ
@wallverb λμν©λλ€. _some_ νμμ ꡬ문μ μ¬μ©νμ¬ λͺ μ μ μΌλ‘ μ νμ λͺ μνμ§ μκ³ νμ₯μ μνμ§ μμμ λνλ΄λ κ²μ΄ μ’μ΅λλ€. κ·Έλ¬λ μ΄μ¨λ μ΄μ λ²μ κ³Όμ νΈνμ±μ μν΄ μ°λ¦¬λ νμ λ¨μΈμ΄ κ·Έ μλ―Έλ₯Ό κ°λλ‘ νμ©ν΄μΌν©λλ€.