programing

TypeScript에서 부울을 숫자로 캐스팅하는 방법(예: 0 또는 1)

powerit 2023. 7. 2. 21:05
반응형

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

반응형