유형 스크립트에서 문자열 변수를 문자열 리터럴 유형으로 캐스트하는 방법
Typescript에서 다음과 같은 서명을 가진 함수를 호출한다고 가정합니다.
function foo(param: "TRUE"|"FALSE"|"NONE")
내가 어떻게...
var str = runtimeString()
if(str === "TRUE" | str === "FALSE" | str === "NONE")
foo(str)
아니면, 명시적인 값이 유일한 방법입니다.
var str = runtimeString()
if(str === "TRUE")
foo("TRUE")
else if(str === "FALSE" )
foo("FALSE")
else if(str === "NONE")
foo("NONE")
다음과 같이 문자열 리터럴 유형을 만듭니다.
type NullableBoolean = "TRUE" | "FALSE" | "NONE";
함수 정의에서 다음 유형을 사용합니다.param
:
function foo(param: NullableBoolean)
{
...
}
문자열을 문자열 리터럴 유형으로 캐스트해야 합니다.
var str = runtimeString();
if(str === "TRUE" || str === "FALSE" || str === "NONE")
foo(<NullableBoolean>str);
런타임 문자열이 유효한 옵션 중 하나인지 확인하는 경우 문자열 리터럴 유형을 예상하는 함수 유형에 문자열을 캐스팅하면 됩니다.
type Tristate = "TRUE"|"FALSE"|"NONE";
function foo(param: Tristate) {
return "enhanced: " + param;
}
let validInput = "NONE";
foo(validInput as Tristate);
캐스트를 수행하는 또 다른 방법은 다음과 같이 유형을 추가하는 것입니다.
foo(<Tristate> validInput);
런타임 문자열의 데이터에 대한 컴파일러의 의견을 무시합니다.따라서 런타임에 정의된 세 개의 문자열 이외의 값이 당신에게 들어갈 가능성이 있습니다.foo
기능.
내가 찾은 가장 좋은 방법은 타입 가드를 만드는 것이었습니다.
type NullableBoolean = "TRUE" | "FALSE" | "NONE";
function foo(param: NullableBoolean)
{
...
}
function isNullableBool(str: string): str is NullableBoolean
{
return str === "TRUE" || str === "FALSE" || str === "NONE"
}
if(isNullableBool(str)) { foo(str); }
값 목록을 반복해야 하지만 브렛의 답변보다 더 나은 캡슐화를 얻을 수 있기 때문에 이상적이지 않습니다.
언급URL : https://stackoverflow.com/questions/38524972/how-to-cast-a-string-variable-to-a-string-literal-type-in-typescript
'source' 카테고리의 다른 글
EPLUS OpenXML 행 수를 가져오는 방법(c#) (0) | 2023.06.14 |
---|---|
(다른 플랫폼에서) NDEBUG 전처리기 매크로는 무엇에 사용됩니까? (0) | 2023.06.14 |
연속된 각 시퀀스에 대한 그룹 번호 생성 (0) | 2023.06.14 |
데이터, 방법 및 계산을 글로벌 가치로 만들려면 어떻게 해야 합니까? (0) | 2023.06.14 |
제공자 com.google을 가져올 수 없습니다.화력 기지파이어베이스Init 공급자 (0) | 2023.06.14 |