TIL_210412
3768 ワード
きょう習った
TypeScript
概要
JavaScriptの親互換言語(マイクロソフトで実現)
拡張子は.ts(無条件ではない)を使用してjsコードをコンパイルの結果として出力します.
最終的には、実行時にこのような出力のjsコードが駆動されます.
特長
静的タイプを明確にすることができます.
開発者は,予想される変数や関数の目的をIDEやコンパイラに明確に伝えることができるため,これらの情報に基づいてコードの自動完了をサポートしたり,誤った変数や関数の使用を誤って報告したりすることができ,バニラJSに比べて生産性を大幅に向上させることができる.
また、apiを実装および使用する場合、そのapiのI/Oが何であるかを明確にすることができるため、apiを使用する場合にマニュアルを参照したりコードを開いたりする必要があるjsよりも効率的である.
隠匿化の限界
タイプスクリプトには、クラス内でのみ使用される属性とメソッドを区別するキーワードHE private
が用意されていますが、このような非表示を支援する機能はJavaScriptでは使用されません.
JAvascriptのすべてのクラスでの方法はpublic
です.private
(外部からアクセスできない)のキーワードや機能が区別されていないため、一部の開発者は、underbarのようなprefix
を貼り付けるレベルに分けています.
しかし,すべてプロトタイプチェーンに曝されるため,安全性からも機能からも完全な意味でのprivate
とは考えにくい.
従って、最近ではprivate method
およびprivate property
が導入されており、mdnでも見つかるが、mdnのブラウザサポートの場合、多くのブラウザがサポートしていないため、実際にこの機能を使用することは難しい.
これらの限界のため、symbolとWeakMapを使用して非表示を試みることができます.現在、TypeScriptの登場により、多くのJavaScript開発者がタイプスクリプトに移行し、private
機能を使用しています.
抽象機能なし
オブジェクト向けプログラミングの主な特徴の1つは抽象であり,属性とメソッドの名前のみを露出し,使用を簡略化することを意味する.
ただし、JavaScriptには存在しない機能です.
(タイプスクリプトはすでに主な機能として実現されており、これはバニラJavaScriptのレベルに相当する)
TypeScript抽象例interface ClockInterface {
currentTime: Date;
setTime(d: Date): void;
}
// TS에서는 interface 키위드가 추상화를 가능하게 한다.
class Clock implements ClockInterface {
currentTime: Date = new Date();
setTime(d: Date) {
this.currentTime = d;
}
constructor(h: number, m: number) {}
}
インタフェースとクラスが個別に定義されていることがわかります.
タイプスクリプトでは、インタフェースはクラス実装者としてインタフェースを記述するのに役立つ約束と見なされます.(インタフェースは複数実装可能)
したがって,クラスを使用する立場では,露出したインタフェースにより클래스 -> 메소드 이름이 의도한 바 대로 작동
と明確に表される.
また、これは、実際の実装コードを開示することなく、使用方法を開示するのに有利である.
Reference
この問題について(TIL_210412), 我々は、より多くの情報をここで見つけました
https://velog.io/@ccrjun/TIL210412
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
タイプスクリプトには、クラス内でのみ使用される属性とメソッドを区別するキーワードHE
private
が用意されていますが、このような非表示を支援する機能はJavaScriptでは使用されません.JAvascriptのすべてのクラスでの方法は
public
です.private
(外部からアクセスできない)のキーワードや機能が区別されていないため、一部の開発者は、underbarのようなprefix
を貼り付けるレベルに分けています.しかし,すべてプロトタイプチェーンに曝されるため,安全性からも機能からも完全な意味での
private
とは考えにくい.従って、最近では
private method
およびprivate property
が導入されており、mdnでも見つかるが、mdnのブラウザサポートの場合、多くのブラウザがサポートしていないため、実際にこの機能を使用することは難しい.これらの限界のため、symbolとWeakMapを使用して非表示を試みることができます.現在、TypeScriptの登場により、多くのJavaScript開発者がタイプスクリプトに移行し、
private
機能を使用しています.抽象機能なし
オブジェクト向けプログラミングの主な特徴の1つは抽象であり,属性とメソッドの名前のみを露出し,使用を簡略化することを意味する.
ただし、JavaScriptには存在しない機能です.
(タイプスクリプトはすでに主な機能として実現されており、これはバニラJavaScriptのレベルに相当する)
TypeScript抽象例interface ClockInterface {
currentTime: Date;
setTime(d: Date): void;
}
// TS에서는 interface 키위드가 추상화를 가능하게 한다.
class Clock implements ClockInterface {
currentTime: Date = new Date();
setTime(d: Date) {
this.currentTime = d;
}
constructor(h: number, m: number) {}
}
インタフェースとクラスが個別に定義されていることがわかります.
タイプスクリプトでは、インタフェースはクラス実装者としてインタフェースを記述するのに役立つ約束と見なされます.(インタフェースは複数実装可能)
したがって,クラスを使用する立場では,露出したインタフェースにより클래스 -> 메소드 이름이 의도한 바 대로 작동
と明確に表される.
また、これは、実際の実装コードを開示することなく、使用方法を開示するのに有利である.
Reference
この問題について(TIL_210412), 我々は、より多くの情報をここで見つけました
https://velog.io/@ccrjun/TIL210412
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
interface ClockInterface {
currentTime: Date;
setTime(d: Date): void;
}
// TS에서는 interface 키위드가 추상화를 가능하게 한다.
class Clock implements ClockInterface {
currentTime: Date = new Date();
setTime(d: Date) {
this.currentTime = d;
}
constructor(h: number, m: number) {}
}
Reference
この問題について(TIL_210412), 我々は、より多くの情報をここで見つけました https://velog.io/@ccrjun/TIL210412テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol