Typescript: Multiple brackets field declaration





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







1















I found this expression in a project:



export class MyComponent implements OnInit {
public field: { [key: number] : string } = something
...
}


and I don't know what it means. Can anyone explain this and give me a reference, so I can learn this type of declarations?










share|improve this question





























    1















    I found this expression in a project:



    export class MyComponent implements OnInit {
    public field: { [key: number] : string } = something
    ...
    }


    and I don't know what it means. Can anyone explain this and give me a reference, so I can learn this type of declarations?










    share|improve this question

























      1












      1








      1








      I found this expression in a project:



      export class MyComponent implements OnInit {
      public field: { [key: number] : string } = something
      ...
      }


      and I don't know what it means. Can anyone explain this and give me a reference, so I can learn this type of declarations?










      share|improve this question














      I found this expression in a project:



      export class MyComponent implements OnInit {
      public field: { [key: number] : string } = something
      ...
      }


      and I don't know what it means. Can anyone explain this and give me a reference, so I can learn this type of declarations?







      typescript






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 16 '18 at 13:08









      MTZMTZ

      96114




      96114
























          2 Answers
          2






          active

          oldest

          votes


















          3














          field is an object type (because of the {}) that has a numeric index signature that returns a string. This means that an object assigned to the field can only have numeric keys and the values in the object must be of type string



          let field: { [key: number]: string };

          field = {
          0: "A",
          //"A": "A", // error key is not numeric
          //0: 0, // error value is not a string
          }

          let a = field[0] //a is string

          field = ["A", "B"] // arrays are valid as well


          You can read more about it here






          share|improve this answer


























          • Do you mean a is a string, right?

            – MTZ
            Nov 16 '18 at 13:46











          • @MateutAlin yes, my bad, fixed :)

            – Titian Cernicova-Dragomir
            Nov 16 '18 at 13:50











          • @MateutAlin no, it's just the name of the index parameter , it can be any name you want, key and name are common choices, but any name will do

            – Titian Cernicova-Dragomir
            Nov 16 '18 at 14:03





















          3














          { [key: number] : string }


          is an anonymous/inline type declaration, it translates to:



          interface Anon {
          [key: number]: string;
          }


          The brackets are declare, that the type of any undeclared additional property in that object has to be of type number and the value of that type must be a string.



          { 1: "foo", 2: "bar" } // valid
          { "1": "foo", "2": "bar" } // invalid


          http://www.typescriptlang.org/docs/handbook/advanced-types.html#index-types-and-string-index-signatures






          share|improve this answer
























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53338544%2ftypescript-multiple-brackets-field-declaration%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            3














            field is an object type (because of the {}) that has a numeric index signature that returns a string. This means that an object assigned to the field can only have numeric keys and the values in the object must be of type string



            let field: { [key: number]: string };

            field = {
            0: "A",
            //"A": "A", // error key is not numeric
            //0: 0, // error value is not a string
            }

            let a = field[0] //a is string

            field = ["A", "B"] // arrays are valid as well


            You can read more about it here






            share|improve this answer


























            • Do you mean a is a string, right?

              – MTZ
              Nov 16 '18 at 13:46











            • @MateutAlin yes, my bad, fixed :)

              – Titian Cernicova-Dragomir
              Nov 16 '18 at 13:50











            • @MateutAlin no, it's just the name of the index parameter , it can be any name you want, key and name are common choices, but any name will do

              – Titian Cernicova-Dragomir
              Nov 16 '18 at 14:03


















            3














            field is an object type (because of the {}) that has a numeric index signature that returns a string. This means that an object assigned to the field can only have numeric keys and the values in the object must be of type string



            let field: { [key: number]: string };

            field = {
            0: "A",
            //"A": "A", // error key is not numeric
            //0: 0, // error value is not a string
            }

            let a = field[0] //a is string

            field = ["A", "B"] // arrays are valid as well


            You can read more about it here






            share|improve this answer


























            • Do you mean a is a string, right?

              – MTZ
              Nov 16 '18 at 13:46











            • @MateutAlin yes, my bad, fixed :)

              – Titian Cernicova-Dragomir
              Nov 16 '18 at 13:50











            • @MateutAlin no, it's just the name of the index parameter , it can be any name you want, key and name are common choices, but any name will do

              – Titian Cernicova-Dragomir
              Nov 16 '18 at 14:03
















            3












            3








            3







            field is an object type (because of the {}) that has a numeric index signature that returns a string. This means that an object assigned to the field can only have numeric keys and the values in the object must be of type string



            let field: { [key: number]: string };

            field = {
            0: "A",
            //"A": "A", // error key is not numeric
            //0: 0, // error value is not a string
            }

            let a = field[0] //a is string

            field = ["A", "B"] // arrays are valid as well


            You can read more about it here






            share|improve this answer















            field is an object type (because of the {}) that has a numeric index signature that returns a string. This means that an object assigned to the field can only have numeric keys and the values in the object must be of type string



            let field: { [key: number]: string };

            field = {
            0: "A",
            //"A": "A", // error key is not numeric
            //0: 0, // error value is not a string
            }

            let a = field[0] //a is string

            field = ["A", "B"] // arrays are valid as well


            You can read more about it here







            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited Nov 16 '18 at 13:50

























            answered Nov 16 '18 at 13:14









            Titian Cernicova-DragomirTitian Cernicova-Dragomir

            73k35270




            73k35270













            • Do you mean a is a string, right?

              – MTZ
              Nov 16 '18 at 13:46











            • @MateutAlin yes, my bad, fixed :)

              – Titian Cernicova-Dragomir
              Nov 16 '18 at 13:50











            • @MateutAlin no, it's just the name of the index parameter , it can be any name you want, key and name are common choices, but any name will do

              – Titian Cernicova-Dragomir
              Nov 16 '18 at 14:03





















            • Do you mean a is a string, right?

              – MTZ
              Nov 16 '18 at 13:46











            • @MateutAlin yes, my bad, fixed :)

              – Titian Cernicova-Dragomir
              Nov 16 '18 at 13:50











            • @MateutAlin no, it's just the name of the index parameter , it can be any name you want, key and name are common choices, but any name will do

              – Titian Cernicova-Dragomir
              Nov 16 '18 at 14:03



















            Do you mean a is a string, right?

            – MTZ
            Nov 16 '18 at 13:46





            Do you mean a is a string, right?

            – MTZ
            Nov 16 '18 at 13:46













            @MateutAlin yes, my bad, fixed :)

            – Titian Cernicova-Dragomir
            Nov 16 '18 at 13:50





            @MateutAlin yes, my bad, fixed :)

            – Titian Cernicova-Dragomir
            Nov 16 '18 at 13:50













            @MateutAlin no, it's just the name of the index parameter , it can be any name you want, key and name are common choices, but any name will do

            – Titian Cernicova-Dragomir
            Nov 16 '18 at 14:03







            @MateutAlin no, it's just the name of the index parameter , it can be any name you want, key and name are common choices, but any name will do

            – Titian Cernicova-Dragomir
            Nov 16 '18 at 14:03















            3














            { [key: number] : string }


            is an anonymous/inline type declaration, it translates to:



            interface Anon {
            [key: number]: string;
            }


            The brackets are declare, that the type of any undeclared additional property in that object has to be of type number and the value of that type must be a string.



            { 1: "foo", 2: "bar" } // valid
            { "1": "foo", "2": "bar" } // invalid


            http://www.typescriptlang.org/docs/handbook/advanced-types.html#index-types-and-string-index-signatures






            share|improve this answer




























              3














              { [key: number] : string }


              is an anonymous/inline type declaration, it translates to:



              interface Anon {
              [key: number]: string;
              }


              The brackets are declare, that the type of any undeclared additional property in that object has to be of type number and the value of that type must be a string.



              { 1: "foo", 2: "bar" } // valid
              { "1": "foo", "2": "bar" } // invalid


              http://www.typescriptlang.org/docs/handbook/advanced-types.html#index-types-and-string-index-signatures






              share|improve this answer


























                3












                3








                3







                { [key: number] : string }


                is an anonymous/inline type declaration, it translates to:



                interface Anon {
                [key: number]: string;
                }


                The brackets are declare, that the type of any undeclared additional property in that object has to be of type number and the value of that type must be a string.



                { 1: "foo", 2: "bar" } // valid
                { "1": "foo", "2": "bar" } // invalid


                http://www.typescriptlang.org/docs/handbook/advanced-types.html#index-types-and-string-index-signatures






                share|improve this answer













                { [key: number] : string }


                is an anonymous/inline type declaration, it translates to:



                interface Anon {
                [key: number]: string;
                }


                The brackets are declare, that the type of any undeclared additional property in that object has to be of type number and the value of that type must be a string.



                { 1: "foo", 2: "bar" } // valid
                { "1": "foo", "2": "bar" } // invalid


                http://www.typescriptlang.org/docs/handbook/advanced-types.html#index-types-and-string-index-signatures







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 16 '18 at 13:14









                Josef FazekasJosef Fazekas

                30037




                30037






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53338544%2ftypescript-multiple-brackets-field-declaration%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    List item for chat from Array inside array React Native

                    Jo Brand

                    Thiostrepton