[TIL 210823] 🏷️Typescript Handbookで新しく知ったポイント1
タイプスクリプトマニュアルで新しく知った1点
The Basics
JavaScriptはダイナミックタイプ言語です.したがって、タイプエラーなどの問題があるかどうかを判断するには、コードを実行する必要があります.タイプスクリプトは静的タイプ化(static typing)によりjavascriptコードを実行する前にタイプ推定を行うことができます.
tscはタイプスクリプトコンパイラです
tsc hello.ts
:タイプスクリプトにエラーがある場合は、エラーを出力します.hello.tsファイルをjsファイルのhelloにコンパイルします.jsファイルを出力として生成します.tsc --noEmitOnError hello.ts
:エラーが報告された場合、出力は出力されません.すなわち,エラーがない場合にのみ出力を生成できる.tsc --target es2015 hello.ts
:タイプスクリプトは基本的にJavaScriptのES 3構文を使用してコンパイルされ、--targetオプションを使用してECMAScriptバージョンを指定できます.タイプスクリプトに明確なタイプ名を付ける必要がない場合があります.
let msg = "hello there!";
:msgは明らかに文字列ですただし、タイプコメントでは、プログラム実行時の動作は絶対に変更されません(実行時とは関係ありませんx)
noImplicitAny
:noImpliceAnyオプションは、任意のタイプの暗示式と宣言でエラーが発生します.タイプスクリプトはanyとして指定された変数のタイプをチェックしません.したがって、anyは最も寛容なタイプと見なすことができますが、anyタイプはタイプスクリプトの根本的な目的を失効させ、エラーを引き起こすことが多いです.そのためできるだけ避けるべきタイプです.(unknownで代用)strictNullChecks
:nullとundefinedはより明確です.nullとundefinedが明確でないと、制御不能なエラーになる可能性があるので、この2つを区別することが重要です!Everyday Types
オプションタイプ(?)使用するときは、定義されていないかどうかを確認することが重要です.(JavaScriptからpropに値を渡さないと、実行時にその値がUndefindになります)
Union Typeは、2種類以上のタイプからなるタイプです.(ex) value: string | number)
Type Aliasはタイプの名前を指定します.(タイプを変数として宣言するのと同様)
(これはタイプスクリプトを使用するときによく使われる形式ですが、名前は分かりません.)😂)
インタフェース宣言は、オブジェクトタイプの名前を指定する別の方法と言える.
// Type Alias
type Point = {
x: number;
y: number;
};
// Interface
interface Point {
x: number;
y: number;
}
Type AliasesとInterfacesの違いは?
インタフェースはextends拡張タイプを使用できます.
interfaceは、次のように、存在するinterfaceに新しいフィールドを追加できます.
でも機能はほぼ似ているので、好みで選べば使えます.
タイプサポートは、タイプスクリプトがタイプを特定できない場合に直接タイプを宣言するために使用されます.(ただし、タイプスクリプトコードはコンパイル時に消去されるため、実行時には役に立たない!)
Literal Typeはstringの文に従って、数字の特定の数で表示されるタイプです.
(ex) align: "left"| "right"| "center", returnType: -1 | 0 | 1)
(+booleanは最初はtrue|false unionタイプ)
as const
はconstと似ていますが、タイプシステム内のオブジェクトのすべての属性が通常の文字列や数値タイプではなくテキストタイプであることを保証します.const req = { url: "https://example.com", method: "GET" } as const;
x!.toString()
でタイプエラーは発生しません.→ただし運転時とは関係ないので注意が必要const oneHundred: bigint = BigInt(100) 또는 100n;
const firstName = Symbol("name");
const secondName = Symbol("name");
if (firstName === secondName) {
// firstName 과 secondName은 고유한 타입을 갖는다.
// Can't ever happen
}
Reference
この問題について([TIL 210823] 🏷️Typescript Handbookで新しく知ったポイント1), 我々は、より多くの情報をここで見つけました https://velog.io/@syoung125/TIL-210823-Typescript-Handbook에서-새로-알게된-점-1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol