반응형
TypeScript에서 부울을 숫자로 캐스팅하는 방법(예: 0 또는 1)
우리가 알고 있는 바와 같이 타입캐스트는 타입스크립트에서 어설션 타입이라고 불립니다.다음 코드 섹션:
// the variable will change to true at onetime
let isPlay: boolean = false;
let actions: string[] = ['stop', 'play'];
let action: string = actions[<number> isPlay];
컴파일 시 오류가 발생합니다.
Error:(56, 35) TS2352: Neither type 'boolean' nor type 'number' is assignable to the other.
그리고 나서 저는 그것을 사용하려고 합니다.any
유형:
let action: string = actions[<number> <any> isPlay];
잘못되기도 합니다.그 코드를 어떻게 다시 쓸 수 있을까요?
그냥 캐스트할 수는 없습니다. 문제는 컴파일 시간뿐만 아니라 런타임에도 있습니다.
이를 위한 몇 가지 방법이 방법은 다음과 같습니다.
let action: string = actions[isPlay ? 1 : 0];
let action: string = actions[+isPlay];
let action: string = actions[Number(isPlay)];
컴파일러와 런타임 모두에서 문제가 없을 것입니다.
다음을 사용하여 모든 항목을 부울로 변환한 다음 숫자로 변환할 수 있습니다.+!!
:
const action: string = actions[+!!isPlay]
이는 예를 들어 다음 조건 중 적어도 두 가지를 유지하거나 정확히 하나를 유지하려는 경우에 유용할 수 있습니다.
const ok = (+!!something) + (+!!somethingelse) + (+!!thirdthing) > 1
const ok = (+!!something) + (+!!somethingelse) + (+!!thirdthing) === 1
언급URL : https://stackoverflow.com/questions/43687958/in-typescript-how-to-cast-boolean-to-number-like-0-or-1
반응형
'programing' 카테고리의 다른 글
'dplyr'의 새 열/변수에 동적 이름 사용 (0) | 2023.07.02 |
---|---|
스프링 부트 구성 요소는 단일 클래스를 포함할 수 있습니다. (0) | 2023.07.02 |
코드와 비교하여 전체 파일 git 비난을 표시하는 방법 (0) | 2023.07.02 |
rgdal 패키지 설치 (0) | 2023.07.02 |
Spring Boot 2.1 - Spring Security 자동 구성 없이 @WebMvcTest (0) | 2023.07.02 |