TS)クラスとインタフェース
12494 ワード
タイプスクリプトからクラスタイプとインタフェースタイプを理解します.
JSとTSには若干の違いがある.
また、生産者関数については、他のタイプを指定することはできません!
エラーチェックを行う場合は、パラメータに直接タイプを指定する必要があります.次のような状況を見てください.
次は練習コードです
1つの例では、異なる入力を受信し、数字と文字を配列に別々に格納します.
パラメータを使うのもいいですね.
を拡張できます.
type aliasを処理する際に、似たような機能&演算子を使用しました!
下を見てください!
宣言を繰り返した場合、extendsと同じ操作が実行されます.
本当に厳格なコードを作りたいならtypeを使ったほうがいいです(繰り返し宣言時にエラー通知!ただしインタフェースはextendsを使用して操作)
ただし、外部ライブラリを使用して変数をカスタマイズしたり、独自の変数を追加したりする必要がある場合は、インタフェースのextendsを使用することが望ましいです.
状況によっては、両者を混用したほうがいい.
Class
JSとTSには若干の違いがある.
class Person {
constructor(name) {
this.name = name // 자바스크립트는 동적필드추가 가능
}
}
class Person { // 타입스크립트는 필드를 직접 정의해놓고 써야함
name;
age;
constructor(name) {
this.name = name
}
}
let john = new Person('john');
let jack = new Person('jack');
TSでは、フィールドが予め指定されていないとエラーが発生します.class Person {
name:string;
age:number;
constructor(name:string){
this.name = name;
}
他郷の情は以前勉強したのと同じで、特に何もありません.また、生産者関数については、他のタイプを指定することはできません!
エラーチェックを行う場合は、パラメータに直接タイプを指定する必要があります.次のような状況を見てください.
class Car {
model:string
price:number
constructor(model,price) {
this.model = model;
this.price = price;
}
}
new Car(44,33); // 에러 안뜸!
number、numberをパラメータとして本番関数に渡していますが、フィールドに代入するときにエラーをキャプチャできません.次は練習コードです
1つの例では、異なる入力を受信し、数字と文字を配列に別々に格納します.
パラメータを使うのもいいですね.
class Word{
num: number[] = []
str: string[] = []
constructor(...array:(number|string)[]) {
array.filter((ele)=>{
if(typeof ele == 'string'){
this.str.push(ele);
}else {
this.num.push(ele);
}
});
}
}
console.log(new Word('kim',3,5,'park'));
Interface
interface Pallete {
color: string,
size:number
}
let bar:Pallete = {color:'black',size:200}
使用方法は、指定したオブジェクトタイプと同様です.インタフェース特性1
interface Pallete extends Size {
color: string,
}
interface Size{
size:number
}
let bar:Pallete = {color:'black',size:200}
前述したように、各インタフェースを拡張することができる.type aliasを処理する際に、似たような機能&演算子を使用しました!
下を見てください!
// type alias 를 사용했을 때
type Size = {
size:number
}
type Pallete = Size & {color:string}
&はクロス演算子で、extendsと似ていますが、原理は異なります.インタフェースのプロパティ2
宣言
interface Animal {
name :string
}
interface Animal {
legs :number
}
// 위 코드는 아래와 같습니다.
interface Animal {
name :string,
legs:number
}
だからインタフェースが好きですか、タイプが好きですか。
本当に厳格なコードを作りたいならtypeを使ったほうがいいです(繰り返し宣言時にエラー通知!ただしインタフェースはextendsを使用して操作)
ただし、外部ライブラリを使用して変数をカスタマイズしたり、独自の変数を追加したりする必要がある場合は、インタフェースのextendsを使用することが望ましいです.
状況によっては、両者を混用したほうがいい.
Reference
この問題について(TS)クラスとインタフェース), 我々は、より多くの情報をここで見つけました https://velog.io/@sae1013/TSClass-와-Interfaceテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol