Bei einer Typskriptfunktion mit einem generischen Typ, der für den Rückgabeart verwendet wird und einen Standardwert hat, wird der Rückgabetyp der Funktion unterschiedlich abgeleitet, wenn der Rückgabewert der Funktion zur Initialisierung einer Variablen verwendet wird und eine typisierte Variable zugewiesen wird.
Code: Select all
function test(elementName:string):T{
// irrelevant, just returning something
return document.createElement(elementName) as unknown as T;
}
const e1 = test('div'); // fine, e1's inferred type is HTMLElement
let e2: HTMLElement | undefined;
e2 = test('div'); // Type error
Im ersten Fall (E1) ist alles in Ordnung, der Standard -generische Typ htmlelement wird verwendet und der Typ von E1 wird in htmlelement . Htmlelement .
Warum ist das Verhalten unterschiedlich? Warum wird der generische Standardwert im zweiten Fall nicht verwendet? Ist es erwartet?
Beispiel auf dem TS -Spielplatz