- 1. TypeScript 「never」を使った網羅チェック
- 2. JavaScript 三項演算子と||演算子と??演算子
- 3. ディズニーホテル ミラコスタは、どんなホテルだったのか。
- 4. Node.jsで普通のJavaScriptをimportする
- 5. クロージャーを用いたプライベート変数の書き方
- 6. プロパティ ‘xxx’ は型 ‘never’ に存在しません。
- 7. ミュータブルとイミュータブルについて
- 8. webアプリ開発で意識したこと
- 9. webアプリ開発 テストケース作成
- 10. JavaScript vs TypeScript: Detailed Comparison
- 11. JavaScriptを使った非同期通信について
- 12. 不動産情報ライブラリAPIのベクトルタイルをMapLibreで表示してみる
- 13. kintone ゲストスペースの bulkRequest api オプション指定方法
- 14. ChatGPTくんにMatrixコードを出力してもらった。
- 15. ChatGPT のようなヌルヌルした増分テキスト表示をやってみたい
- 16. バニーガーデンのレビューをレビュー分析 AI "ReviewAI" でまとめてみた!
- 17. ギターのコードチェンジ練習ツールを作成しました
- 18. プチ話 ブログが書きやすくなった話
- 19. ブロック内のアロー関数と普通の関数の違い
- 20. HTML,CSS,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)## 解決方法
`