Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
TS5.4と5.5のいいやつ
Search
めろたんたんめん
May 23, 2024
0
200
TS5.4と5.5のいいやつ
めろたんたんめん
May 23, 2024
Tweet
Share
More Decks by めろたんたんめん
See All by めろたんたんめん
Nuxt.jsからNext.jsに 乗り換えるにあたって 大変だったこと
renyamizuno
0
280
HoudiniによるCSS錬金術
renyamizuno
0
110
MisocaでReactした話
renyamizuno
1
2.3k
Featured
See All Featured
Producing Creativity
orderedlist
PRO
347
40k
GitHub's CSS Performance
jonrohan
1032
460k
Into the Great Unknown - MozCon
thekraken
40
2k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
The Cult of Friendly URLs
andyhume
79
6.6k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.5k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.6k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
YesSQL, Process and Tooling at Scale
rocio
173
14k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.7k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
13k
Transcript
TS5.4と5.5のこれ便利そう @merotan
雑自己紹介 めろたん X(Twitter): @renyamizuno_ - 株式会社Leaner Technologiesで働いてる。 - フロントエンドを主軸にガヤガヤしてる人。 -
サーバーサイドもやってる(最近はやってない())。
TS5.4
NoInfer
NoInfer ジェネリック関数で引数の型をもとに、他の引数の形を推測できるようになる。
declare function doSomething<T extends string>(a: T[], b: T): void doSomething(["cat",
"dog"], "hamster")
declare function doSomething<T extends string> (a: T[], b: NoInfer<T>): void
doSomething(["cat", "dog"], "hamster")
None
Narrowing
Preserved Narrowing in Closures Following Last Assignments クロージャーの中で変数の型をよしなにしてくれる(雑 クロージャーの外で定義した変数の型推論がよりよくなる。 最後に代入された値の型になる。
function doSomething(names: string[], word: string | undefined) { if (word
=== undefined) { word = "hello!!"; } return names.map(name => `${name} ${word.toUpperCase()}`) }
function doSomething(names: string[], word: string | undefined) { if (word
=== undefined) { word = "hello!!"; } return names.map(name => `${name} ${word.toUpperCase()}`) }
TS5.5 (Beta)
Inferred Type Predicates
Inferred Type Predicates より良い感じに型を推論してくれる(雑 x === null とかを行った場合、より適切な型推論を行うようになる。 「is」が不要になることがある。
const array = [1,2,3,null,5].filter(x => x !== null) array.reduce((a, b)
=> a + b, 0)
const array = [1,2,3,null,5].filter(x => x !== null) array.reduce((a, b)
=> a + b, 0)
おわり https://devblogs.microsoft.com/typescript/announcing-typescript-5-4/ https://devblogs.microsoft.com/typescript/announcing-typescript-5-5-beta/
Control Flow Narrowing for Constant Indexed Accesses
function f(obj: Record<string, unknown>, key: string) { if (typeof obj[key]
=== "string") { obj[key].toUpperCase(); } }
function f(obj: Record<string, unknown>, key: string) { if (typeof obj[key]
=== "string") { obj[key].toUpperCase(); } }