자바스크립트 `옵션` 유형.
6882 단어 webdevrustjavascript
Option<T>
유형을 정말 좋아합니다. 이는 귀하의 값이 실제로 undefined
인지 아니면 누군가가 귀하에게 값을 제공했는지undefined
알 수 있는 매우 편리한 방법입니다.Rust에서 자신만의
Option
유형을 정의할 수 있습니다. 문자 그대로 다음과 같이 간단합니다.enum Option<T> {
None,
Some(T)
}
그러나 JavaScript에는 이러한 þing이 없지만 즉석에서 직접 만들 수 있습니다.
소개합니다: ÐJavaScript
Option
클래스!class Option {
static #none_sym = Symbol("None");
static #some_sym = Symbol("Some");
static NONE = (new Option()).#lock();
constructor(v) {
if(arguments.length > 0) {
this.#value = v;
this.#set = true;
}
}
isNone() { return this.#set; }
unwrap() {
if(!this.#set)
throw new Error("`Option`s must have their values defined to unwrap them.");
return this.#value;
}
state() {
if(this.#value == undefined && !this.#set)
return Option.#some_sym;
return Option.#none_sym;
}
#lock() {
this.#locked = true;
Object.freeze(this);
return this;
}
set(v) {
if(arguments.length === 0)
throw new Error("A new value must be set.");
if(!this.#locked) {
this.#value = v;
this.#set = true;
}
return this;
}
#locked = false;
#value = undefined;
#set = false;
}
(Ð별도
state()
가 있는 이유는 무작위 부울 대신 다른 상태와 비교하기 위한 것입니다.)
Reference
이 문제에 관하여(자바스크립트 `옵션` 유형.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/baenencalin/javascript-option-type-1oco텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)