Bruke navngitte parametere i JavaScript (basert på TypeScript)


Jeg har problemer når jeg bruker navngitte parametere i TypeScript. Jeg vet at det ikke støttes på den måten jeg bruker det i TypeScript.

Men hvordan kan jeg gjøre det?

TypeScript:

SomeFunction(name1: boolean, 
             name2: boolean, 
             name3: boolean, 
             name4: boolean) // Will occur only one time, 
                            // so the change should be in TypeScript

JavaScript:

$(function () {
       ...SomeFunction({name1:false, 
                        name2:false, 
                        name3:false, 
                        name4:true}); // Will occur 100 times
});

Jeg så på (dette fungerte ikke):

Finnes det en måte å gi navngitte parametere i et funksjonskall i JavaScript?

Hvordan kan jeg legge til valgfrie navngitte parametere til en TypeScript-funksjonsparameter?

Hva kan jeg gjøre i TypeScript for å bruke navngitte parametere i JavaScript?

Det jeg lurer på, er at Visual Studio 2015 ikke viste en syntaksfeil når jeg brukte navngitt parameter på den måten jeg brukte den i TypeScript...

PS.: Jeg bruker TypeScript 2.1

Svar #1

Ekte navngitte parametere eksisterer verken i JavaScript eller TypeScript, men du kan bruke destructuring for å simulere navngitte parametere:

interface Names {
    name1: boolean
    name2: boolean
    name3: boolean
    name4: boolean
}

function myFunction({name1, name2, name3, name4}: Names) {
    // name1, etc. are boolean
}

Merk: Typen Names er faktisk valgfri. Følgende JavaScript-kode (uten typing) er gyldig i TS:

function myFunction({name1, name2, name3, name4}) {
    // name1, etc. are of type any
}

Svar #2

Den eneste måten å få noe som ligner på "navngitte parametere" er å bruke en enkelt objektparameter:

type SomeFunctionParams = {
    name1: boolean;
    name2: boolean;
    name3: boolean;
    name4: boolean;
}

SomeFunction(params: SomeFunctionParams) { ... }

Og så:

$(function () {
    SomeFunction({
        name1:false,
        name2:false,
        name3:false,
        name4:true
    });
});

Relaterte artikler