Eine kurze Diskussion über 7 wissenswerte Methoden in TypeScript
Dieser Artikel stellt Ihnen 7 Methoden in TypeScript vor, die Sie kennen müssen. Ich hoffe, er wird Ihnen hilfreich sein!
Das Typsystem in TypeScript ist sehr leistungsfähig. Es bietet uns Typensicherheit. So beliebt Typsysteme auch sind, sie können unseren Code auch unübersichtlich und unlesbar machen, wenn wir Typen und Schnittstellen nicht planen und entwerfen.
Generika
Das Vermeiden von Codeduplizierungen und das Erstellen wiederverwendbarer Typen ist ein wichtiger Bestandteil beim Schreiben von prägnantem Code. Generics sind eine Funktion von TypeScript, die es uns ermöglicht, wiederverwendbare Typen zu schreiben. Schauen Sie sich das folgende Beispiel an:
type Add<T> = (a: T, b: T) => T const addNumbers: Add<number> = (a, b) => { return a + b } const addStrings: Add<string> = (a, b) => { return a + b }
Fügen Sie den richtigen Typ in den generischen Typ von Add
ein, der zur Beschreibung der Addition zweier Zahlen oder der Verkettung zweier Zeichenfolgen verwendet werden kann. Anstatt für jede Funktion einen Typ zu schreiben, müssen wir dies mit Generika nur einmal tun. Dies erspart uns nicht nur Aufwand, sondern macht unseren Code auch sauberer und weniger fehleranfällig. Add
的泛型中,它可以被用来描述两个数字的相加或两个字符串的连接。我们不需要为每个函数写一个类型,而只需要用泛型做一次。这不仅节省了我们的精力,而且还使我们的代码更加简洁,更不容易出错。
实用类型
TypeScript 原生提供了几个有用的实用类型来帮助我们进行一些常见的类型转换。这些实用类型是全局可用的,它们都使用了泛型。
下面这7个是我经常用到的。
1. Pick<Type, Keys>
Pick
会从 Type 中挑选属性集 Keys 来创建一个新的类型,Keys 可以是一个字符串字面或字符串字面的联合。Keys 的值必须是 Type 的键,否则TypeScript编译器会抱怨。当你想通过从有很多属性的对象中挑选某些属性来创建更轻的对象时,这个实用类型特别有用。
type User = { name: string age: number address: string occupation: string } type BasicUser = Pick<User, "name" | "age"> // type BasicUser = { // name: string; // age: number; // }
2. Omit<Type, Keys>
Omit
与Pick
相反。 Keys
不是说要保留哪些属性,而是指要省略的属性键集。 当我们只想从对象中删除某些属性并保留其他属性时,这个会更有用。
type User = { name: string age: number address: string occupation: string } type BasicUser = Omit<User, "address" | "occupation"> // type BasicUser = { // name: string; // age: number; // }
3. Partial<Type>
Partial
构造了一个类型,其所有的类型属性都设置为可选。当我们在编写一个对象的更新逻辑时,这个可能非常有用。
type User = { name: string age: number address: string occupation: string } type PartialUser = Partial<User> // type PartialUser = { // name?: string; // age?: number; // address?: string; // occupation?: string; // }
4. Required<Type>
Required
与Partial
相反。它构造了一个类型的所有属性都是必填的类型。它可以被用来确保在一个类型中没有可选属性出现。
type PartialUser = { name: string age: number address?: string occupation?: string } type User = Required<PartialUser> // type User = { // name: string; // age: number; // address: string; // occupation: string; // }
5. Readonly<Type>
Readonly
构建了一个类型,其类型的所有属性被设置为只读。重新分配新的值 TS 就会报错。
type User = { name: string age: number address: string occupation: string } type ReadOnlyUser = Readonly<User> const user: ReadOnlyUser = { name: "小智", age: 24, address: "厦门", occupation: "大迁世界" } user.name = "王大冶" // Cannot assign to 'name' because it is a read-only property.
6. ReturnType<Type>
ReturnType
Die folgenden 7 verwende ich oft.
1. Pick<Type, Keys>
Pick
wählt den Attributsatz Keys aus Type aus, um einen neuen Typ zu erstellen von Literalen oder String-Literalen. Der Wert von Keys muss ein Schlüssel vom Type sein, andernfalls wird sich der TypeScript-Compiler beschweren. Dieser Dienstprogrammtyp ist besonders nützlich, wenn Sie ein leichteres Objekt erstellen möchten, indem Sie bestimmte Eigenschaften aus einem Objekt auswählen, das über viele Eigenschaften verfügt.import axios from 'axios' type Response = ReturnType<typeof axios> function callAPI(): Response{ return axios("url") }Nach dem Login kopierenOmit
ist das Gegenteil vonPick
.Keys
bedeutet nicht, welche Attribute beibehalten werden sollen, sondern die Menge der Attributschlüssel, die weggelassen werden sollen. Dies ist nützlicher, wenn wir nur bestimmte Eigenschaften vom Objekt entfernen und andere beibehalten möchten. 🎜rrreee🎜🎜3.Partial<Type>
🎜🎜🎜Partial
erstellt einen Typ, bei dem alle seine Typattribute auf optional gesetzt sind. Dies kann sehr nützlich sein, wenn wir Aktualisierungslogik für ein Objekt schreiben. 🎜rrreee🎜🎜4.Erforderlich<Typ>
🎜🎜🎜Erforderlich
ist das Gegenteil vonTeilweise
. Es erstellt einen Typ, bei dem alle Eigenschaften erforderlich sind. Damit kann sichergestellt werden, dass in einem Typ keine optionalen Eigenschaften vorhanden sind. 🎜rrreee🎜🎜5.Readonly<Type>
🎜🎜🎜Readonly
Konstruiert einen Typ, in dem alle Eigenschaften des Typs auf schreibgeschützt gesetzt sind. Die Neuzuweisung eines neuen Wertes TS führt zu einem Fehler. 🎜rrreee🎜🎜6.ReturnType<Type>
🎜🎜🎜ReturnType
Konstruiert einen Typ aus dem Rückgabetyp eines Funktionstyps. Dies ist sehr nützlich, wenn wir mit Funktionstypen aus externen Bibliotheken arbeiten und darauf basierend benutzerdefinierte Typen erstellen möchten. 🎜rrreee🎜Zusätzlich zu den oben genannten gibt es noch andere Dienstprogrammtypen, die uns helfen können, saubereren Code zu schreiben. Einen Link zur TypeScript-Dokumentation zu Dienstprogrammtypen finden Sie hier. 🎜🎜🎜https://www.typescriptlang.org/docs/handbook/utility-types.html🎜🎜🎜Utility-Typen sind eine sehr nützliche Funktion von TypeScript. Entwickler sollten sie nutzen, um Hardcoding-Typen zu vermeiden. Sehen Sie besser aus als Ihre Kollegen? Das müssen Sie wissen! 🎜🎜🎜Dieser Artikel ist abgedruckt unter: https://segmentfault.com/a/1190000040574488🎜🎜🎜Weitere Kenntnisse zum Thema Programmierung finden Sie unter: 🎜Einführung in die Programmierung🎜! ! 🎜Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über 7 wissenswerte Methoden in TypeScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Generische Funktionen in Go lösen das Problem variadischer Typen: Generische Funktionen ermöglichen die Angabe von Typparametern zur Laufzeit. Dadurch ist es möglich, Funktionen zu schreiben, die Parameter unterschiedlichen Typs verarbeiten können. Beispielsweise ist die Max-Funktion eine generische Funktion, die zwei vergleichbare Parameter akzeptiert und den größeren Wert zurückgibt. Durch die Verwendung generischer Funktionen können wir flexibleren und allgemeineren Code schreiben, der verschiedene Parametertypen verarbeiten kann.

Anwendungsszenarien von Generika in Go: Erfassungsvorgänge: Erstellen Sie Erfassungsvorgänge, die für jeden Typ geeignet sind, z. B. zum Filtern. Datenstrukturen: Schreiben Sie allgemeine Datenstrukturen wie Warteschlangen, Stapel und Karten, um verschiedene Datentypen zu speichern und zu bearbeiten. Algorithmen: Schreiben Sie allgemeine Algorithmen wie Sortieren, Suchen und Reduzieren, die verschiedene Datentypen verarbeiten können.

Generische Java-Funktionen ermöglichen das Festlegen von Ober- und Untergrenzen. Extends gibt an, dass der von einer Funktion akzeptierte oder zurückgegebene Datentyp ein Untertyp des angegebenen Typs sein muss, z. B. Die untere Grenze (super) gibt an, dass der von einer Funktion akzeptierte oder zurückgegebene Datentyp ein Supertyp des angegebenen Typs sein muss, z. B. Die Verwendung von Generika verbessert die Wiederverwendbarkeit und Sicherheit des Codes.

Zu den Auswirkungen von Generika auf Go-Funktionssignaturen und -Parameter gehören: Typparameter: Funktionssignaturen können Typparameter enthalten, die die Typen angeben, die die Funktion verwenden kann. Typeinschränkungen: Typparameter können Einschränkungen haben, die Bedingungen angeben, die sie erfüllen müssen. Parametertyp-Inferenz: Der Compiler kann auf den Typ nicht spezifizierter Typparameter schließen. Angeben von Typen: Parametertypen können explizit angegeben werden, um generische Funktionen aufzurufen. Dies erhöht die Wiederverwendbarkeit und Flexibilität des Codes und ermöglicht Ihnen das Schreiben von Funktionen und Typen, die mit mehreren Typen verwendet werden können.

Einschränkungen der generischen Go-Funktionen: Es werden nur Typparameter unterstützt, Wertparameter werden nicht unterstützt. Funktionsrekursion wird nicht unterstützt. Typparameter können nicht explizit angegeben werden, sie werden vom Compiler abgeleitet.

Die Kombination von Aufzählungstypen und Generika in Java: Wenn Sie eine Aufzählung mit Generika deklarieren, müssen Sie spitze Klammern hinzufügen, und T ist der Typparameter. Wenn Sie eine generische Klasse erstellen, müssen Sie auch spitze Klammern hinzufügen. T ist ein Typparameter, der jeden Typ speichern kann. Diese Kombination verbessert die Codeflexibilität, die Typsicherheit und vereinfacht den Code.

In Go können variadische Parameter für generische Funktionen verwendet werden, wodurch generische Funktionen erstellt werden können, die eine variable Anzahl von Parametern akzeptieren und für mehrere Typen geeignet sind. Sie können beispielsweise eine generische Funktion Mode erstellen, die das häufigste Element in einer bestimmten Liste findet: Mode akzeptiert eine variable Anzahl von Elementen vom Typ T. Es zählt Elemente, indem es Zählungen für jedes Element erstellt. Dann findet es das Element, das am häufigsten vorkommt, und gibt es als Modus zurück. In der Hauptfunktion können Sie die Funktion „Mode“ für die Liste der Zeichenfolgen und die Liste der Ganzzahlen aufrufen, die jeweils die Zeichenfolge und die Zahl mit den meisten Vorkommen zurückgibt.

Generische Java-Methoden leiten automatisch Typparameter ab, ohne sie explizit zu deklarieren. Zu den Regeln gehören: 1. explizite Typdeklarationen verwenden; 2. einen einzelnen Typ ableiten; 4. Konstruktor-Rückgabewerttypen ableiten; Dies vereinfacht den Code und erleichtert das Schreiben und Verwenden generischer Methoden.
