Heim > Web-Frontend > js-Tutorial > Kommentieren von Funktionen in Typescript

Kommentieren von Funktionen in Typescript

Barbara Streisand
Freigeben: 2024-12-23 12:27:35
Original
542 Leute haben es durchsucht

Annotating Functions in Typescript

Die einfachste Art, eine Funktion in Typoskript mit Anmerkungen zu versehen, ist wie folgt

function add(a: number, b: number): number{
 // logic
}

// or

const add = (a: number, b: number): number => {
    //logic
}
Nach dem Login kopieren
Nach dem Login kopieren

Optionale Parameter werden mit Fragezeichen versehen param? so

function optional(a: number, b?: number){
    console.log(a)
}
Nach dem Login kopieren
Nach dem Login kopieren

Aber was ist mit Rückruffunktionen oder Funktionen, bei denen der Typ der Argumente und die Rückgabetypen in Beziehung stehen (in diesem Fall generisch).


Funktionswerte

Beobachten Sie diese JavaScript-Funktion

function multiplier(factor){
    return value => factor * value
}
Nach dem Login kopieren
Nach dem Login kopieren

damit wir die Funktion so nutzen können;

const n  = multiplier(6)
n(8) // 48
Nach dem Login kopieren
Nach dem Login kopieren

Funktionswerte werden in Typoskript wie folgt mit Anmerkungen versehen

(param1: type, param2: type)=> type

// or

const add: (a: number, b: number)=> number = function (a, b){
    return a + b
}
Nach dem Login kopieren

Um die Multiplikatorfunktion zu kommentieren, haben wir

function multiplier(factor: number): (value: number) => number{
    return value => factor * value
}
Nach dem Login kopieren

Ihr IDE (vorzugsweise) VSCode leitet automatisch den Werttyp (als Zahl) in der Funktionslogik ab


Generische Funktionen

Diese Funktionsanmerkung ist falsch

function pickFirst(array: Array<T>): T{
    return array[0]
}
Nach dem Login kopieren

Natürlich löst dies einen Fehler aus
Name T

kann nicht gefunden werden

Daher ist das Format zum Kommentieren allgemeiner Funktionen

function fnName <T,U>(param: T): U{
    //logic
}
Nach dem Login kopieren

Beobachten Sie, wo die generischen Namen deklariert wurden. also, um die obige Funktion korrekt zu kommentieren;

function pickFirst<T>(array: Array<T>): T{
    return array[0]
}
Nach dem Login kopieren

Jetzt funktioniert das.

Aber was ist mit generischen Funktionen, die Funktionsparameter haben?

Zum Beispiel möchten wir eine benutzerdefinierte Kartenfunktion namens myMap mit Anmerkungen versehen, die so in Javascript geschrieben wurde

function myMap(arr, fn){
    rreturn arr.map(fn)
}
Nach dem Login kopieren

Wir können es so kommentieren

function myMap<Input, Output>(arr: Input[], fn: (item: Input, index?: number) => Output): Output[]{
    return arr.map(fn)
}
Nach dem Login kopieren

Was wir im obigen Snippet beachten sollten, ist, dass die fn-Funktion ein Element desselben Typs des Eingabearrays nimmt und einen Ausgabetyp zurückgibt.

Was ist mit der statischen Array.from()-Methode?

function myFrom<Type>(iterable: Iterable<Type>): Array<Type>{
    // logic
}
Nach dem Login kopieren

oder die Methode array.filter()?

function myFilter<Input>(arr: Input[], fn: (item: Input) => boolean): Input[]{
    return arr.filter(fn)
}
Nach dem Login kopieren

Allgemeine Einschränkungen

Sie können generische Variablen auch auf Typen beschränken, die eine bestimmte Eigenschaft haben. Zum Beispiel

function pickInnerFirst<T extends {length: number}>(array: Array<T>): T{
    return array[0][0]
}
Nach dem Login kopieren

Diese Funktion wählt das allererste Element in einem zweidimensionalen Array aus

Dadurch wird sichergestellt, dass es nur für Arrays und Strings (meistens) so funktioniert, dass

pickOne([12, 20, 30]) // wont work.
Nach dem Login kopieren

Wir können auch Schnittstellen
verwenden

interface Lengthly{
    length: number;
}

function pickInnerFirst<T extends Lengthly>(array: Array<T>): T{
    return array[0][0]
}
Nach dem Login kopieren

Funktionsschnittstellen

Falls Sie es nicht wissen: Funktionen sind Objekte und sie haben Eigenschaften

const add = (a, b) => a + b

console.log(add.toString()) //(a, b) => a + b

// also
console.log(Object.getPrototypeOf(add) == Function.prototype) //true
console.log(Object.getPrototypeOf(Function.prototype) == Object.prototype) //true
Nach dem Login kopieren

Das zweite Beispiel zeigte, dass die Add-Funktion ein untergeordnetes Element von Object.prototype ist (obwohl es kein direktes untergeordnetes Element ist) und daher ein Objekt ist.

LustigerweiseSie können in JavaScript Eigenschaften an eine Funktion anhängen

function add(a: number, b: number): number{
 // logic
}

// or

const add = (a: number, b: number): number => {
    //logic
}
Nach dem Login kopieren
Nach dem Login kopieren

Dieses Snippet wird zurückgegeben

function optional(a: number, b?: number){
    console.log(a)
}
Nach dem Login kopieren
Nach dem Login kopieren

Beachten Sie, dass wir bei A eine Eigenschaft namens Beschreibung an die Funktion angehängt haben, die nur mit Objekten möglich sein kann.

Das ist die Schlussfolgerung;

Objekte können mit Schnittstellen beschrieben werden (normalerweise). Für Funktionen ist dies auch möglich. Dies ist jedoch nur etwas, das Sie berücksichtigen sollten, wenn Sie Ihren Funktionen spezielle Eigenschaften hinzufügen.

function multiplier(factor){
    return value => factor * value
}
Nach dem Login kopieren
Nach dem Login kopieren

Im Kommentar A beschreiben wir die Argumente und Rückgabetypen der Funktion.

Um also den früheren Code im Typoskript mit Anmerkungen zu versehen,

const n  = multiplier(6)
n(8) // 48
Nach dem Login kopieren
Nach dem Login kopieren

Beobachten Sie, wie wir die Schnittstelle in der Shout-Funktion bei A. verwendet haben.


Warum sollte ich verstehen, wie man Funktionen in Typescript mit Anmerkungen versehen kann?

Nun, es hilft beim Aufbau eines viel intelligenteren Typsystems, was wiederum das Risiko von Fehlern verringert. Wenn Sie eine Bibliothek oder ein Framework erstellen, müssen Sie möglicherweise einige oder die meisten der hier genannten Konzepte verwenden.
Wenn Sie nur Bibliotheken verwenden, sind diese Konzepte nicht wirklich notwendig, obwohl sie Ihnen ein viel tieferes Verständnis der Bibliotheken vermitteln können, mit denen Sie arbeiten.

Wenn Sie Fragen haben oder Fehler in diesem Text enthalten sind, teilen Sie diese gerne in den Kommentaren unten mit ⭐

Das obige ist der detaillierte Inhalt vonKommentieren von Funktionen in Typescript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage