使用命名参数JavaScript(基于打字稿)

时间:2017-02-08 09:07:16

标签: javascript typescript

我有问题,在TypeScript中使用命名参数时,我知道它不支持我在TS中使用它的方式。 但我怎么能

打字稿:

SomeFunction(name1: boolean, name2: boolean, name3: boolean, name4: boolean) //will occur only 1 time, so the change should be in typescript

JavaScript的:

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

我在看(这没有用):

Named parameters in javascript

How can I add optional named parameters to a TypeScript function parameter?

在TypeScript中我可以做什么,在JavaScript中使用命名参数?

我想知道的是,VS2015在使用命名参数时没有出现语法错误,就像我在TypeScript中使用它一样......

ps:我使用TS 2.1

3 个答案:

答案 0 :(得分:8)

您可以使用命名参数:

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

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

注意:类型Names实际上是可选的。以下JavaScript代码(无需键入)在TS中有效:

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

精确度:实际上,此功能是用于simulate named parameters解构。真正的命名参数不存在于JavaScript或TypeScript中。

答案 1 :(得分:4)

唯一能够接近“命名参数”的东西是使用单个对象参数:

var b64content = fs.readFileSync('/home/sivasaivarma/Day Users/sivasaivarma/personal/bigdata/images/leadoid.jpg', { encoding: 'base64' })
T.post('media/upload', { media_data: b64content }, function (err, data, response) {

    var params = {
        status: 'LEADoid filters media streams to find your target audience and then engage them within their own social post- https://leadoid.com/#!/home',
        media_ids: [mediaIdStr]
    }

    T.post('statuses/update', params, function (err, data, response) {
        console.log(data)
    })
}

然后:

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

SomeFunction(params: SomeFunctionParams) { ... }

答案 2 :(得分:-4)

简单的解决方案是使用有意义命名的局部变量:

var mungo: boolean=true, mary: boolean=true, and: boolean=true, midge: boolean=true;

zapOn(mungo, mary, and, midge);