実験TypeScript-1 Enumと初期化時のanyの癖を知る(Know Enum and the habit of any at initialization)
ここでお知らせすること。
enumの特徴
空配列を渡すとany[]になる話
/////////////////////////////////////////////////////////////////
enumの特徴
// const enumはJavaScriptを生成しない
// const enumはState[1000]などを許可しない constを付けないと許可する...
// 例えば...
enum B {
Open,
Close
}
B[1000] //OK。Openは0, Closeは1が入っているはずこんな値ないのに...
const enum C {
Open,
Close
}
C[1000] //そんな値がないからError
/////////////////////////////////////////////////////////////////
enumはまーじする
// 初期化すると...
enum AA {
Open = "1",
Colse = "2"
}
enum AA {
Non // 0
}
/// これも
enum AAA {
Open = 0,
Colse = 1
}
enum AAA { Non // 0
}
//////////////////////////////////////////////////////////////////
//enum BBをlet(ミュータブルな型), const(イミュータブルな型)に代入した時の違い。type wideningされる
enum BB {
Open,
Close
}
let closeA = BB.Close // BB。letはリテラル値ではなくそのリテラルが所属するベース値になる
const closeB = BB.Close // BB.Close // constは代入されないことが保証されるのでリテラル型になる
let closeC: BB.Close = 1 // 明示的なアノテーションでtype wideningされるのを防ぐ>/////////////////////////////////////////////////////////////////
これは anyが入る
let h = null;// any
h = 3 // any
h = "b" // any
/// nullまたはundefinedに初期化された変数はanyに拡大される
// そのスコープを離れると明確な方をそれに割り当てる
function x() {
let a = null
a = 3 // any
a = "b" // any
return a
}
x() // string
/////////////////////////////////////////////////////////////////
enumは存在しない値でもokになる...//例えば...
const enum State {
Open,
Close
}
function f(e: State) {
return e
}
const a = f(State.Close)
const b = f(100) // まじか...
// これを数値を許可しないようにするには 値を明示的にする
const enum StateA {
Open = "Open",
Close = "Close"
}
function fA(e: StateA) {
return e
}
fA(StateA.Close)fA(100); // error
///////////////////////////////////////////////////////////////
let c = [] // 初期化時、空配列を渡すとany[]になる
//その後
c.push(3)
c; // number[]に動的に推論される
c.push("aaa")
c; //"aaa"が入ったので変わる この時点で(string | number)[]
///////////////////////////////////////////////////////////////
「武骨日記の」プライバシーポリシーに関して
・プライバシーポリシー
・個人情報取り扱いに関して
・サイトTOP
・私は何者か
・29歳よしもと芸人がWebデザイナー未経験で学校に通い5年後フリーランスのフロントエンドエンジニアになるためにやった9つのこと
・フロント記事
・フロントエンドエンジニア
・フロントエンド記事(タグ)
・TypeScript
・TypeScript練習問題集
・【TypeScript】TypeSript中級者になる為に知っておくと良い108個のこと
・JavaScript練習問題
・styled-componentsの使い方
・SCSS問題集
・GraphQL「Apollo x Relay-Style-Cursor-Pagination(リレースタイルカーソルページネーション)」
・recomposeと仲良くなりたい
・機動戦士FlowType
・初めてReactNativeWebを触ってみて
・Ramda.jsシグネチャの読み方
・環境変数の話
・いちごタルトの作り方
・フロントエンドエンジニア豚汁の作り方
「武骨日記の」プライバシーポリシーに関して
プライバシーポリシー
株式会社TerraceTechについて
最近起業しました。
・株式会社TerraceTech
SNS
・しずかなインターネット kenjimorita
・インド旅 instagram
・適当な日常写真 instagram
・シュールさーん instagram
・シュールさーん LINEスタンプ
・もりたけんじTwitter
・ネタ帳Twitter
・note
※わたしが結成しているWebチームではWeb未経験者、フリーランスの方へのお仕事を紹介しています。
また個人レッスンしてほしい生徒も募集中です。
もしご興味ある方はチャットからご連絡ください。
※業務連絡やお久しぶり連絡もチャットからお願いします。