TypeScript
https://scrapbox.io/files/6711fbbfcf0c85da54229053.png
Map<K, V>
Map<K, V> | TypeScript入門『サバイバルTypeScript』
code:ts
const map = new Map<string, number>();
map.set("a", 1);
console.log(map.get("a"));
コンストラクにはタプル型 [K, V][] を渡す
code:ts
const map = new Map<string, number>([
"a", 1,
"b", 2,
"c", 3,
]);
console.log(map);
// Map (3) {"a" => 1, "b" => 2, "c" => 3}
d.ts
型定義ファイル (.d.ts) | TypeScript入門『サバイバルTypeScript』
#API 呼び出しのレスポンスの型を書くときに使える?
#部分型関係 (subtyping relation)
#部分型 とは、2 つの型の互換性を表す概念
型 S が型 T の部分型であるとは、S 型の値が T 型の値でもあることを表現する
code:tyepscript
type FooBar = {
foo: string;
bar: number;
}
type FooBarBaz = {
foo: string;
bar: number;
baz: boolean;
}
const obj: FooBarBaz = {
foo: "Hi",
bar: 1,
baz: true,
};
const obj2: FooBar = obj;
#正規表現
/ab+c/ig のような形式
// で正規表現の構文を囲う
後ろにフラグ
i: 大文字小文字を区別
g: 文字列中の 1 箇所だけでなく全ての箇所
m: ^, $ が文字列の先頭・末尾だけでなく行の先頭・末尾
s: .に改行文字を含む
u: 文字列を UTF-16 コードユニット列だけでなく、 Unicode コードポイント列として扱う
y: 指定された開始位置(lastIndex)からのみ
#構造的部分型
v.s. #公称型
#ユニオン型
#タプル型
#判別可能なユニオン型
プリミティブ
number
string
boolean
null
undefined
symbol
bigint <- 😅
#Falsy #偽値
null
undefined
false
Nan
0
-0
0n
""
document.all <- JavaScript で唯一偽値のオブジェクト
Nominal Type Phantom Type Branded Type
Nominal Typing | TypeScript Deep Dive
as v.s. unknown
any 型の値を使う際に一切の型チェックが行われない
一方、unknown 型の場合は、中に何が入っているかは不明であるという性質を TypeScript コンパイラがリスペクトしてくれる
unknown 型の値は正体が全くわからないのでできることが限られている
unknown 型の値に対してプロパティアクセスしようとすると エラ-: hoge is of type 'unknown'. 的なことを言われる
undefined 型の値に対しては型の絞り込みを行うようにするとよい