2017-05-22 7 views
0

나는 상수 문자열 값을 포함하는 수많은 객체가있는 프로젝트를 가지고 있습니다.동일한 모듈에서 수출 상수를 기본값으로 입력하고 별칭을 입력 할 수 있습니까?

const StringLiterals = { 
    a: "LetterA", 
    b: "LetterB", 
    c: "LetterC" 
}; 

export default StringLiterals; 

대부분의 경우 이러한 문자열 상수가 매개 변수로 사용됩니다. 이 상수의 문자열 만 사용되도록하려는 것이므로 유형 별칭을 정의합니다.

type StringLiteral = keyof typeof StringLiterals; 

바로 지금,이 유형 별칭을 어디에서나 다시 정의해야합니다. 포함

  • 나는 두 개의 서로 다른 모듈을 원하지 않는, 하나 또한

    import StringLiteral from "./StringLiteral"; 
    
    function doSomething(str: StringLiteral) { 
        if (str === StringLiteral.a) { ... } 
    } 
    

    : 나는 이런 식으로 뭔가를 할 수 있도록 동일한 모듈에 문자열 값 및 유형 별칭을 정의하는 것 유형 및 문자열 값을 포함하는 다른.

  • 열거 형을 원하지 않습니다. 식별자를 문자열 값에 매핑 할 수 없기 때문입니다. 숫자 여야합니다. 문자열과 숫자 값 사이를 변환하기 위해 많은 참조를 피하기를 원합니다.

이 모든 것이 가능합니까?

답변

0
const StringLiterals = { 
    a: "LetterA" as "LetterA", 
    b: "LetterB" as "LetterB", 
    c: "LetterC" as "LetterC" 
}; 

type StringLiterals = (keyof StringLiterals)[keyof typeof StringLiterals]; 

export default StringLiterals;