JavaScript関連のことを調べてみた

JavaScript関連のことを調べてみた

TypeScript 「never」を使った網羅チェック

UNIONを使った全網羅条件分岐処理の場合、条件が追加になっても対応漏れにならないように対策をしましょう。っていう話。

ユーザーランク「A, B, C」がありました。
“`javascript
// ユーザーランク
type UserRankOptions = ‘A’ | ‘B’ | ‘C’;
“`
ユーザーランクに以下の仕様変更が発生が発生しました。
> ランクDを追加
> ランクDのボーナスポイントは30とする

“`javascript
type UserRankOptions = ‘A’ | ‘B’ | ‘C’ | ‘D’; // ランクD追加
“`

## :-1::-1: なにも対策していない
**addBonusPoint**メソッドは対策をしていなので、改修が漏れた場合ランクDのボーナスポイント30が付加されず不具合の要因になる。
“`javascript
// ユーザーランク
type UserRankOptions = ‘A’ | ‘B’ | ‘C’ | ‘D’;

// ユーザークラス
class User {
private _point: nu

元記事を表示

JavaScript 三項演算子と||演算子と??演算子

三項演算子と||演算子と??演算子の結果確認してみよう。っていう話。

“`javascript
const TITLE_LEN = 12;
const spacePadding = (val, len) => (val + ‘ ‘.repeat(len)).slice(0, len);
const output = (title, res1, res2, res3) =>
console.log(`${spacePadding(title, TITLE_LEN)} 3項:${res1} ||:${res2} ??:${res3}`);

let str;
let res1;
let res2;
let res3;

console.log(‘文字列検証’);
str = undefined;
res1 = str ? str : ‘A’;
res2 = str || ‘A’;
res3 = str ?? ‘A’;
output(‘undefined’, res1, res2, res3);

str = null;
res1 = str ? str : ‘A’;

元記事を表示

ディズニーホテル ミラコスタは、どんなホテルだったのか。

# はじめに

ディズニーシーの新ホテル「ファンタジースプリングス」が公開されましたね!
本記事では、ファンタジースプリングスの公開を記念して、現時点で最高ランクの
ホテル ミラコスタ がどんなホテルだったのか振り返りたいと思います。
方法としては、レビュー分析AI ReviewAI (レビューアイ)を使って
[じゃらん](https://www.jalan.net/)さんに集まっているレビューを分析していきます。

# ホテル ミラコスタ

[ホテル ミラコスタ](https://www.jalan.net/yad370886/?yadNo=370886&dateUndecided=1&screenId=UWW3703&smlCd=120508&yadoDetailMode=1&distCd=01)

> パークの中に宿泊できるディズニーテーマパーク一体型ホテル。イタリアンクラシックをコンセプトにした上質な空間で、パークでの冒険を振り返り、明日への航海に想いを馳せることができます。

言わずと知れた、ディズニーの最高ランクのホテルです。

# ReviewAI (レビューアイ)

元記事を表示

Node.jsで普通のJavaScriptをimportする

ES ModulesでもCommonJS でもUMDでもない普通のJavaScriptをimportする方法を調べました。ブラウザで動作するスクリプトをテストしたいときにご活用ください

# 普通のJavaScript

“`js:script.js
class MyClass {
hello() {
return ‘こんにちは’
}
}
“`

# 普通のJavaScriptを変更することなくimportする

## eval⭐⭐⭐⭐⭐

“`js:main.mjs
import { readFileSync } from ‘node:fs’

eval(readFileSync(‘script.js’) + ‘;global.MyClass=MyClass’)

console.assert(new MyClass().hello() === ‘こんにちは’, ‘あいさつすること’)
“`

普通のJavaScriptを変更しなくていいのでオススメ

## import⭐⭐⭐

“`js:main.mjs
import { readFile

元記事を表示

クロージャーを用いたプライベート変数の書き方

### やりたいこと

increment関数を数回呼び、1ずつインクリメントされるような動作を実現したい。

### 問題点

このコードだと、numがインクリメントされるが、numという変数がどこでも初期化可能なため、書き換えられると、うまくいかない。

“`jsx
let num = 0;

function increment() {
num += 1;
console.log(num);
}

increment();
increment();
increment();

num = 0;
increment();
“`
![スクリーンショット 2024-04-24 21.22.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776880/2d130716-497c-5b8c-193a-d15cf1c84d27.png)

### 解決策
クロージャーを使ってprivateな変数を定義すれば解決する。
1. incrementFactoryという関数の中で、numを宣言し、

元記事を表示

プロパティ ‘xxx’ は型 ‘never’ に存在しません。

## 問題点
TypeScriptの開発中に以下のようなエラーが出ています。
APIから受け取る配列型の指定がないため、Never型になっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435389/bb70a6c5-0d68-3e6d-4e6e-e675582b0dbf.png)

## 解決方法
`