not not 연산자와 non-null assertion 연산자는 모두 JavaScript와 TypeScript에서 사용되는 연산자 중 하나이지만, 다른 목적으로 사용됩니다.
1. not not(!!) 연산자
not not(!!) 연산자는 Boolean 값을 반환합니다. 이 연산자는 값을 불린값으로 변환할 때 사용됩니다. 이 연산자를 사용하면, 값이 존재하면 true를 반환하고, 값이 존재하지 않으면 false를 반환합니다. 예를 들어, 다음과 같이 사용할 수 있습니다.
const myValue = 0;
const myBoolean = !!myValue; // false
not not(!!) 연산자는 값이 falsy한 값일 경우 false를 반환합니다. JavaScript에서는 다음과 같은 값을 falsy 값으로 간주합니다.
- false
- 0
- -0
- 0n
- "", '', ``
- null
- undefined
- NaN
not not 연산자에서 값이 존재하지 않는 경우는 null, undefined, 0, 빈 문자열 등 falsy한 값들이 포함됩니다. 하지만, 이 연산자는 null과 undefined를 구별하지 않습니다. 즉, 둘 다 falsy 값으로 취급됩니다.
2. Non-null Assertion(!) 연산자
Non-null Assertion(!) 연산자는 TypeScript에서 사용되며, 값이 null 또는 undefined가 아님을 보장합니다. 이 연산자는 변수 또는 속성 뒤에 붙여서 사용합니다. 이 연산자를 사용하면 TypeScript 컴파일러는 해당 변수 또는 속성이 null 또는 undefined가 아님을 보장합니다. 예를 들어, 다음과 같이 사용할 수 있습니다.
const myValue: string | undefined = undefined;
const myNonNullableValue: string = myValue!; // Compile error
위 예제에서 myValue 변수는 string 또는 undefined 일 수 있습니다. myNonNullableValue 변수는 myValue 변수의 값이 null 또는 undefined가 아님을 보장하기 위해 ! 연산자를 사용하여 지정했습니다. 그러나 TypeScript 컴파일러는 myValue가 undefined 일 수 있기 때문에 컴파일 에러를 발생시킵니다.
not not(!!) 연산자는 값이 존재하는지 확인하고, non-null assertion(!) 연산자는 값이 null 또는 undefined가 아님을 보장합니다.
'Front-end > JavaScript' 카테고리의 다른 글
JS) 배열의 얕은 복사와 깊은 복사 (0) | 2023.03.08 |
---|---|
JS) Promise를 반환하는 함수의 다양한 표현 (fetch, axios) (0) | 2023.03.01 |
JS) then vs async/await ... (예시: fetch API) (0) | 2023.03.01 |
JS) fetch VS axios (API 호출) (0) | 2023.02.27 |
JS) [Alert] 웹 사이트에 경고 문구 띄우기 (0) | 2022.10.15 |