在同一行中的typescript中创建和初始化字典

时间:2017-08-21 18:37:46

标签: typescript dictionary

我想使用TypeScript创建一个字典,并在同一行初始化它,而不是先创建,然后填充值,如下所示

var persons: { [id: string] : IPerson; } = {};
persons["p1"] = { firstName: "F1", lastname: "L1" };

如何将上述内容合并为一个?

1 个答案:

答案 0 :(得分:6)

只需创建一个对象。 ECMAScripts中的对象是关联数组。

以下是您作为对象的示例:

app.controller('CreatePollController', function($scope) {
    // functions
    function runAfterRender (callback) {
        setTimeout(function () {
            if (angular.isFunction(callback)) {
                callback();
            }
        }, 0);
    }

    // $scope
    $scope.questions = [];

    $scope.init = function(numOfInputs){
        for(var i = 0; i < numOfInputs; i++){
            $scope.questions.push({
                "questionText":""
            });
        }
    };

    $scope.addQuestion = function(){
        $scope.questions.push({
            "questionText":""
        });
    };

    $scope.createInputKeypress = function(e){
        if(e.keyCode === 13){
            e.preventDefault();

            var idx = Number(e.target.id.replace("q_", ""));
            if(idx === this.questions.length - 1){
                this.addQuestion();
            }

            runAfterRender(function () {
                var nextId = "#q_" + (++idx);
                $(nextId).focus();
            });
        }
    };
});

最好使用const persons: { [id: string] : IPerson; } = { p1: { firstName: "F1", lastname: "L1" } }; const代替let