Comment utiliser JS et TypeScript
Cette fois, je vais vous montrer comment utiliser JS et TypeScript, et quelles sont les précautions d'utilisation de JS et TypeScript. Voici des cas pratiques, jetons un coup d'œil.
Avant-propos
Pour un développeur front-end, les classes sont rarement utilisées car il y en a plus en JavaScript La plupart des ce sont des programmations fonctionnelles. Lorsque vous levez la main, il y a une fonction, et il n'y a presque aucune trace de classe ou de nouveauté. Par conséquent, le Design Pattern est également une lacune de la plupart des développeurs front-end.
Dans le processus d'apprentissage d'Angular récemment, j'ai découvert qu'il utilise beaucoup de cours. Je dois l'admirer. Angular est en effet un excellent framework qui mérite une étude approfondie.
Cet article présentera brièvement les cours en JavaScript et TypeScript.
Avant d'introduire le cours, certains concepts de base doivent être introduits en premier.
1. Membres statiques
Les membres de la classe elle-même peuvent être hérités, mais les instances ne sont pas accessibles. On les trouve généralement dans les classes d'outils, comme le $.ajax le plus courant dans jQuery. À l'époque, ajax vaut $ La méthode statique est facile à utiliser et il n'est pas nécessaire d'obtenir une nouvelle instance via un nouvel appel de fonction.
2. Membres privés
Généralement, les membres d'une classe ne peuvent pas être hérités et ne peuvent être utilisés qu'en interne. Les instances ne sont pas accessibles. Elles sont un peu comme des variables à l'intérieur d'une fermeture, mais elles le sont. toujours certain. La différence est qu'actuellement, JavaScript ne peut pas définir directement les membres privés et ne peut aider à la mise en œuvre que par d'autres méthodes.
3. Getter/setter
Attributs d'accesseur Lorsque nous accédons ou modifions les attributs d'une instance, nous pouvons intercepter ces deux opérations via les attributs d'accesseur pour en faire d'autres. cette API pour suivre les modifications des données.
4. Les membres de l'instance
font référence aux membres de l'instance créée par new, qui peuvent être hérités. Cette fonctionnalité permet également la réutilisation du code.
5. Classe abstraite, méthode abstraite
La classe abstraite fait référence à une classe qui ne peut pas être instanciée. Son appel via le mot-clé new signalera une erreur.
La méthode abstraite fournit uniquement le nom, les paramètres et la valeur de retour de la méthode, et n'est pas responsable de l'implémentation. L'implémentation spécifique est complétée par la sous-classe. Si une sous-classe hérite d'une classe abstraite, alors la sous-classe doit. implémentez la classe parent Toutes les méthodes abstraites, sinon une erreur sera signalée.
Ces deux concepts ne peuvent pas être directement implémentés en JavaScript, mais ils peuvent être facilement implémentés en TypeScript ou dans d'autres langages orientés objet De plus, cette fonctionnalité est également un moyen important d'y parvenir. polymorphisme.
Introduction au cas
Afin de mieux présenter les classes, cet article utilisera trois classes comme exemples, à savoir Personne, Chinois, Américain. Vous pouvez rapidement le savoir grâce au littéral : Person est la classe parent (classe de base), le chinois et l'américain sont des sous-classes (classes dérivées).
Person a trois attributs : nom, âge, sexe, méthode sayHello et attribut accesseur fullName. En même temps, Person a également des membres statiques et des membres privés. Puisqu'il est trop difficile de penser à des exemples, utilisons plutôt foo, bar, x, y, z.
En tant que sous-classes, les chinois et les américains héritent des membres d'instance et des membres statiques de Person. En même temps, ils ont aussi des méthodes et des attributs qui leur sont propres :
Le chinois a l'attribut kungfu et peut pratiquer les arts martiaux.
L'Américain a Twitter et peut également envoyer Twitter.
Ensuite, nous utiliserons JavaScript et TypeScript pour implémenter ce cas.
classe en JavaScript
classe en JavaScript doit être discutée séparément. Deux mots-clés, class et extends, sont fournis dans ES6. juste du sucre syntaxique, et la couche inférieure utilise toujours un prototype pour implémenter l'héritage, mais on ne peut nier que cette méthode d'écriture rend le code plus clair et plus facile à lire.
Cours en ES6
class Person { // #x = '私有属性x'; // static x = '静态属性x'; // name; // age; // gender; // 上面的写法还在提案中,并没有成为正式标准,不过变化的可能性已经不大了。 // 顺便吐槽一下,用 # 表示私有成员,真的是很无语. /** * Person的静态方法,可以被子类继承 * 可以通过 this 访问静态成员 */ static foo() { console.log(`类 ${this.name} 有一个 ${this.x}`); } constructor(name, age, gender) { this.name = name; this.age = age; this.gender = gender; } /** * 数据存储器,可以访问实例成员,子类的实例可以继承 * 以通过 this 访问实例成员 */ get fullName() { const suffix = this.gender === '男' ? '先生' : '女士'; return this.name + suffix; } set fullName(value) { console.log(`你已改名为 ${value} `); } /** * Person的实例方法,可以被子类的实例继承 * 可以通过 this 访问实例成员 */ sayHello() { console.log(`你好我是 ${this.fullName} ,我 ${this.age} 岁了`); } } Person.x = '静态属性x';
class Chinese extends Person { static bar() { console.log(`类 ${this.name} 的父类是 ${super.name}`); super.foo(); } constructor(name, age, gender, kungfu) { super(name, age, gender); this.kungfu = kungfu; } martial() { console.log(`${this.name} 正在修炼 ${this.kungfu} `); } }
class American extends Person { // static y = '静态属性y'; static bar() { console.log(`类 ${this.name} 有自己的 ${this.y} ,还继承了父类 ${super.name} 的 ${super.x}`); } constructor(name, age, gender, twitter) { super(name, age, gender); this.twitter = twitter; } sendTwitter(msg) { console.log(`${this.name} : `); console.log(` ${msg}`); } }
American.y = '静态属性y'; Person.x; // 静态属性x Person.foo(); // 类 Person 有一个 静态属性x Chinese.x; // 静态属性x Chinese.foo(); // 类 Chinese 有一个 静态属性x Chinese.bar(); // 类 Chinese 的父类是 Person American.x; // 静态属性x American.y; // '静态属性y American.foo(); // 类 American 有一个 静态属性x American.bar(); // 类 American 有自己的 静态属性y ,还继承了父类 Person 的 静态属性x const p = new Person('Lucy', 20, '女'); const c = new Chinese('韩梅梅', 18, '女', '咏春拳'); const a = new American('特朗普', 72, '男', 'Donald J. Trump'); c.sayHello(); // 你好我是 韩梅梅女士 ,我 18 岁了 c.martial(); // 韩梅梅 正在修炼 咏春拳 a.sayHello(); // 你好我是 特朗普先生 ,我 72 岁了 a.sendTwitter('推特治国'); // 特朗普 : 推特治国
Cours avant ES6
L'essence de l'héritage dans ES5 consiste à créer d'abord l'objet instance de la sous-classe,
然后再将父类的方法添加到 this 上面 Parent.apply(this) 。
ES6 的继承机制完全不同,实质是先创造父类的实例对象 this,所以必须先调用 super 方法,
然后再用子类的构造函数修改this。
为了实现继承,我们需要先实现一个 extendsClass 函数,它的作用是让子类继承父类的静态成员和实例成员。
function extendsClass(parent, child) { // 防止子类和父类相同名称的成员被父类覆盖 var flag = false; // 继承静态成员 for (var k in parent) { flag = k in child; if (!flag) { child[k] = parent[k]; } } // 继承父类prototype上的成员 // 用一个新的构造函数切断父类和子类之间的数据共享 var F = function () { } F.prototype = parent.prototype; var o = new F(); for (var k in o) { flag = k in child.prototype; if (!flag) { child.prototype[k] = o[k]; } } }
function Person(name, age, gender) { this.name = name; this.age = age; this.gender = this.gender; // 如果将 getter/setter 写在 prototype 会获取不到 Object.defineProperty(this, 'fullName', { get: function () { var suffix = this.gender === '男' ? '先生' : '女士'; return this.name + suffix; }, set: function () { console.log('你已改名为 ' + value + ' '); }, }); } Person.x = '静态属性x'; Person.foo = function () { console.log('类 ' + this.name + ' 有一个 ' + this.x); } Person.prototype = { constructor: Person, // get fullName() { }, // set fullName(value) { }, sayHello: function () { console.log('你好我是 ' + this.fullName + ' ,我 ' + this.age + ' 了'); }, };
function Chinese(name, age, gender, kungfu) { // 用call改变this指向,实现继承父类的实例属性 Person.call(this, name, age, gender); this.kungfu = kungfu; } Chinese.bar = function () { console.log('类 ' + this.name + ' 的父类是 ' + Person.name); Person.foo(); } Chinese.prototype = { constructor: Chinese, martial: function () { console.log(this.name + ' 正在修炼 ' + this.kungfu + ' '); } }; extendsClass(Person, Chinese);
function American(name, age, gender, twitter) { Person.call(this, name, age, gender); this.twitter = twitter; } American.y = '静态属性y'; American.bar = function () { console.log('类 ' + this.name + ' 有自己的 ' + this.y + ' ,还继承了父类 ' + Person.name + ' 的 ' + Person.x); } American.prototype = { constructor: American, sendTwitter: function (msg) { console.log(this.name + ' : '); console.log(' ' + msg); } }; extendsClass(Person, American);
TypeScript 中的 class
讲完了 JavaScript 中的类,还是没有用到 抽象类,抽象方法,私有方法这三个概念,由于 JavaScript 语言的局限性,想要实现这三种概念是很困难的,但是在 TypeScript 可以轻松的实现这一特性。
首先我们稍微修改一下例子中的描述,Person 是抽象类,因为一个正常的人肯定是有国籍的,Person 的 sayHello 方法是抽象方法,因为每个国家打招呼的方式不一样。另外一个人的性别是只能读取,不能修改的,且是确定的是,不是男生就是女生,所以还要借助一下枚举。
enum Gender { female = 0, male = 1 };
abstract class Person { private x: string = '私有属性x,子类和实例都无法访问'; protected y: string = '私有属性y,子类可以访问,实例无法访问'; name: string; public age: number; public readonly gender: Gender; // 用关键字 readonly 表明这是一个只读属性 public static x: string = '静态属性x'; public static foo() { console.log(`类 ${this.name} 有一个 ${this.x}`); } constructor(name: string, age: number, gender: Gender) { this.name = name; this.age = age; this.gender = gender; } get fullName(): string { const suffix = this.gender === 1 ? '先生' : '女士'; return this.name + suffix; } set FullName(value: string) { console.log(`你已改名为 ${value} `); } // 抽象方法,具体实现交由子类完成 abstract sayHello(): void; }
class Chinese extends Person { public kungfu: string; public static bar() { console.log(`类 ${this.name} 的父类是 ${super.name}`); super.foo(); } public constructor(name: string, age: number, gender: Gender, kungfu: string) { super(name, age, gender); this.kungfu = kungfu; } public sayHello(): void { console.log(`你好我是 ${this.fullName} ,我 ${this.age} 岁了`); } public martial() { console.log(`${this.name} 正在修炼 ${this.kungfu} `); } }
class American extends Person { static y = '静态属性y'; public static bar() { console.log(`类 ${this.name} 有自己的 ${this.y} ,还继承了父类 ${super.name} 的 ${super.x}`); } public twitter: string; public constructor(name: string, age: number, gender: Gender, twitter: string) { super(name, age, gender); this.twitter = twitter; } public sayHello(): void { console.log(`Hello, I am ${this.fullName} , I'm ${this.age} years old`); } public sendTwitter(msg: string): void { console.log(`${this.name} : `); console.log(` ${msg}`); } }
Person.x; // 静态属性x Person.foo(); // 类 Person 有一个 静态属性x Chinese.x; // 静态属性x Chinese.foo(); // 类 Chinese 有一个 静态属性x Chinese.bar(); // 类 Chinese 的父类是 Person American.x; // 静态属性x American.y; // '静态属性y American.foo(); // 类 American 有一个 静态属性x American.bar(); // 类 American 有自己的 静态属性y ,还继承了父类 Person 的 静态属性x const c: Chinese = new Chinese('韩梅梅', 18, Gender.female, '咏春拳'); const a: American = new American('特朗普', 72, Gender.male, 'Donald J. Trump'); c.sayHello(); // 你好我是 韩梅梅女士 ,我 18 岁了 c.martial(); // 韩梅梅 正在修炼 咏春拳 a.sayHello(); // Hello, I am 特朗普先生 , I'm 72 years old a.sendTwitter('推特治国'); // 特朗普 : 推特治国
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

CrystalDiskMark est un petit outil de référence pour disques durs qui mesure rapidement les vitesses de lecture/écriture séquentielles et aléatoires. Ensuite, laissez l'éditeur vous présenter CrystalDiskMark et comment utiliser crystaldiskmark~ 1. Introduction à CrystalDiskMark CrystalDiskMark est un outil de test de performances de disque largement utilisé pour évaluer la vitesse et les performances de lecture et d'écriture des disques durs mécaniques et des disques SSD (SSD). ). Performances d’E/S aléatoires. Il s'agit d'une application Windows gratuite qui fournit une interface conviviale et divers modes de test pour évaluer différents aspects des performances du disque dur. Elle est largement utilisée dans les revues de matériel.

foobar2000 est un logiciel qui peut écouter des ressources musicales à tout moment. Il vous offre toutes sortes de musique avec une qualité sonore sans perte. La version améliorée du lecteur de musique vous permet d'obtenir une expérience musicale plus complète et plus confortable. lire l'audio avancé sur l'ordinateur. L'appareil est transplanté sur le téléphone mobile pour offrir une expérience de lecture de musique plus pratique et efficace. La conception de l'interface est simple, claire et facile à utiliser. opérations pour démarrer rapidement. Il prend également en charge une variété de skins et de thèmes, personnalisez les paramètres en fonction de vos propres préférences et créez un lecteur de musique exclusif prenant en charge la lecture de plusieurs formats audio. Il prend également en charge la fonction de gain audio pour régler le volume. selon vos propres conditions auditives pour éviter les dommages auditifs causés par un volume excessif. Ensuite, laisse-moi t'aider

NetEase Mailbox, en tant qu'adresse e-mail largement utilisée par les internautes chinois, a toujours gagné la confiance des utilisateurs grâce à ses services stables et efficaces. NetEase Mailbox Master est un logiciel de messagerie spécialement créé pour les utilisateurs de téléphones mobiles. Il simplifie grandement le processus d'envoi et de réception d'e-mails et rend le traitement de nos e-mails plus pratique. Alors comment utiliser NetEase Mailbox Master, et quelles sont ses fonctions spécifiques Ci-dessous, l'éditeur de ce site vous donnera une introduction détaillée, en espérant vous aider ! Tout d’abord, vous pouvez rechercher et télécharger l’application NetEase Mailbox Master dans la boutique d’applications mobiles. Recherchez « NetEase Mailbox Master » dans l'App Store ou Baidu Mobile Assistant, puis suivez les instructions pour l'installer. Une fois le téléchargement et l'installation terminés, nous ouvrons le compte de messagerie NetEase et nous connectons. L'interface de connexion est la suivante

Le stockage cloud est devenu aujourd’hui un élément indispensable de notre vie quotidienne et de notre travail. En tant que l'un des principaux services de stockage cloud en Chine, Baidu Netdisk a gagné la faveur d'un grand nombre d'utilisateurs grâce à ses puissantes fonctions de stockage, sa vitesse de transmission efficace et son expérience de fonctionnement pratique. Et que vous souhaitiez sauvegarder des fichiers importants, partager des informations, regarder des vidéos en ligne ou écouter de la musique, Baidu Cloud Disk peut répondre à vos besoins. Cependant, de nombreux utilisateurs peuvent ne pas comprendre l'utilisation spécifique de l'application Baidu Netdisk, ce didacticiel vous présentera donc en détail comment utiliser l'application Baidu Netdisk. Si vous êtes toujours confus, veuillez suivre cet article pour en savoir plus ! Comment utiliser Baidu Cloud Network Disk : 1. Installation Tout d'abord, lors du téléchargement et de l'installation du logiciel Baidu Cloud, veuillez sélectionner l'option d'installation personnalisée.

MetaMask (également appelé Little Fox Wallet en chinois) est un logiciel de portefeuille de cryptage gratuit et bien accueilli. Actuellement, BTCC prend en charge la liaison au portefeuille MetaMask. Après la liaison, vous pouvez utiliser le portefeuille MetaMask pour vous connecter rapidement, stocker de la valeur, acheter des pièces, etc., et vous pouvez également obtenir un bonus d'essai de 20 USDT pour la première liaison. Dans le didacticiel du portefeuille BTCCMetaMask, nous présenterons en détail comment enregistrer et utiliser MetaMask, ainsi que comment lier et utiliser le portefeuille Little Fox dans BTCC. Qu'est-ce que le portefeuille MetaMask ? Avec plus de 30 millions d’utilisateurs, MetaMask Little Fox Wallet est aujourd’hui l’un des portefeuilles de crypto-monnaie les plus populaires. Son utilisation est gratuite et peut être installée sur le réseau en tant qu'extension

Apple a déployé mardi la mise à jour iOS 17.4, apportant une multitude de nouvelles fonctionnalités et de correctifs aux iPhones. La mise à jour inclut de nouveaux emojis et les utilisateurs de l’UE pourront également les télécharger depuis d’autres magasins d’applications. En outre, la mise à jour renforce également le contrôle de la sécurité de l'iPhone et introduit davantage d'options de configuration de « Protection des appareils volés » pour offrir aux utilisateurs plus de choix et de protection. "iOS 17.3 introduit pour la première fois la fonction "Protection des appareils volés", ajoutant une sécurité supplémentaire aux informations sensibles des utilisateurs. Lorsque l'utilisateur est loin de chez lui et d'autres lieux familiers, cette fonction nécessite que l'utilisateur saisisse des informations biométriques pour la première fois. heure, et après une heure, vous devez saisir à nouveau les informations pour accéder et modifier certaines données, telles que la modification du mot de passe de votre identifiant Apple ou la désactivation de la protection de l'appareil volé.

Avec le développement rapide de la technologie des réseaux, nos vies ont également été grandement facilitées, notamment grâce à la possibilité de télécharger et de partager diverses ressources via le réseau. Dans le processus de téléchargement de ressources, les liens magnétiques sont devenus une méthode de téléchargement très courante et pratique. Alors, comment utiliser les liens magnétiques Thunder ? Ci-dessous, je vais vous donner une introduction détaillée. Xunlei est un outil de téléchargement très populaire qui prend en charge diverses méthodes de téléchargement, notamment les liens magnétiques. Un lien magnétique peut être compris comme une adresse de téléchargement grâce à laquelle nous pouvons obtenir des informations pertinentes sur les ressources.

Le logiciel de voiture Xiaomi fournit des fonctions de contrôle de voiture à distance, permettant aux utilisateurs de contrôler le véhicule à distance via des téléphones mobiles ou des ordinateurs, comme l'ouverture et la fermeture des portes et fenêtres du véhicule, le démarrage du moteur, le contrôle de la climatisation et du système audio du véhicule, etc. l'utilisation et le contenu de ce logiciel, découvrons-le ensemble. Liste complète des fonctions et méthodes d'utilisation de l'application Xiaomi Auto 1. L'application Xiaomi Auto a été lancée sur l'AppStore d'Apple le 25 mars et peut désormais être téléchargée depuis l'App Store sur les téléphones Android. Achat de voiture : découvrez les principaux points forts et les paramètres techniques ; de Xiaomi Auto, et prenez rendez-vous pour un essai routier, configurez et commandez votre voiture Xiaomi, et prenez en charge le traitement en ligne des tâches de récupération de voiture. 3. Communauté : comprenez les informations de la marque Xiaomi Auto, échangez votre expérience automobile et partagez une vie de voiture merveilleuse. 4. Contrôle de la voiture : le téléphone mobile est la télécommande, la télécommande, la sécurité en temps réel, facile ;
