Closed7

GTUGGirls オンラインもくもく会: Type Challengesをやってみる!

mae616mae616

テンプレ

第X問: hogehoge!

問題

回答

サバイバルさん

内容について調べたこと

mae616mae616

第1問: Hello, World!

type HelloWorld = any;

type HelloWorld = string;

サバイバルさん

TypeScriptは型がある(というかそこが特性)。
型注釈というので

const age: number = 25;

変数名の後ろにつけることもできるが、
型エイリアスとして。

type StringOrNumber = string | number;

型の内容に変数名みたいな命名をして宣言することもできる。

https://typescriptbook.jp/reference/values-types-variables/type-alias

mae616mae616

第1問: Hello, World!

type HelloWorld = any;

type HelloWorld = string;

サバイバルさん

TypeScriptは型がある(というかそこが特性)。
型注釈というので

const age: number = 25;

変数名の後ろにつけることもできるが、
型エイリアスとして。

type StringOrNumber = string | number;

型の内容に変数名みたいな命名をして宣言することもできる。

https://typescriptbook.jp/reference/values-types-variables/type-alias

mae616mae616

第2問: Readonly型を定義してみよう❌

// MyReadonly<T>を実装してください
// MyReadonlyは、Tのプロパティをすべて読み取り専用にする型です

interface Todo {
  title: string;
  description: string;
}

const todo: MyReadonly<Todo> = {
  title: "Hey",
  description: "foobar",
};

// MyReadonly<T>を実装してください
// MyReadonlyは、Tのプロパティをすべて読み取り専用にする型です

interface Todo {
  title: string;
  description: string;
}

type MyReadonly<T> = Readonly<T>;

const todo: MyReadonly<Todo> = {
  title: "Hey",
  description: "foobar",
};

サバイバルさん

Readonly<オブジェクト要素> でプロパティの内容を読み取り専用にできる。オブジェクト要素だから今回のインターフェース Todoも設定できる。

内容としては

Readonly<Todo>

ができれば良さそうだけど、MyReadonly<Todo> として一段間踏むようなパズル要素が問題の趣旨のよう。
<Todo>としているので型変数を使用するみたいなのでMyReadonlyという型エイリアスを定義して型引数<T>をそのまま渡すことにした。

https://typescriptbook.jp/reference/type-reuse/utility-types/readonly#readonlytの型引数

ジェネリック 型変数
https://typescriptbook.jp/reference/generics/type-variables#型変数

mae616mae616

4: [easy] Pick

問題

https://github.com/type-challenges/type-challenges/blob/main/questions/00004-easy-pick/README.ja.md

これを見る
https://youtube.com/playlist?list=PLWZJrkeLOrbbHC5itDQc_r11DYVT3chs5&si=Kd5lqoMDUe15x0lT

このスクラップは15日前にクローズされました