{"giá trị". "hàm vuông [n. số] {\n return n * n;\n}\n","token". [{"loại". "T_FUNCTION","bối cảnh". "giá trị bình thường". "chức năng","dòng". 1, "bắt đầu". 0,"kết thúc". 8},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "vuông","đường". 1, "bắt đầu". 9,"kết thúc". 15},{"loại". "T_LPAREN","bối cảnh". "giá trị bình thường". "[","dòng". 1, "bắt đầu". 15,"kết thúc". 16},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "n","dòng". 1, "bắt đầu". 16,"kết thúc". 17},{"loại". "T_COLON","bối cảnh". "loại","giá trị". ". ","dòng". 1, "bắt đầu". 17,"kết thúc". 18},{"loại". "T_NUMBER_TYPE","ngữ cảnh". "loại","giá trị". "số","dòng". 1, "bắt đầu". 19,"kết thúc". 25},{"loại". "T_RPAREN","bối cảnh". "giá trị bình thường". "]","dòng". 1, "bắt đầu". 25,"kết thúc". 26},{"loại". "T_LCURLY","ngữ cảnh". "giá trị bình thường". "{","dòng". 1, "bắt đầu". 27,"kết thúc". 28},{"loại". "T_RETURN","bối cảnh". "giá trị bình thường". "dòng phản hồi". 2, "bắt đầu". 31,"kết thúc". 37},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "n","dòng". 2, "bắt đầu". 38,"kết thúc". 39},{"loại". "T_MULT","bối cảnh". "giá trị bình thường". "*","dòng". 2, "bắt đầu". 40,"kết thúc". 41},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "n","dòng". 2, "bắt đầu". 42,"kết thúc". 43},{"loại". "T_SEMICOLON","bối cảnh". "giá trị bình thường". ";","dòng". 2, "bắt đầu". 43,"kết thúc". 44},{"loại". "T_RCURLY","ngữ cảnh". "giá trị bình thường". "}","dòng". 3, "bắt đầu". 45,"kết thúc". 46}],"lỗi". []}
Một nhóm các loại khác nhau có thể
Ở đây giá trị đầu vào có thể là một
function square[n: number] {
return n * n;
}
5 hoặc một function square[n: number] {
return n * n;
}
41 2 3
function stringifyBasicValue[value: string | number] {
return '' + value;
}
{"giá trị". "hàm stringifyBasicValue[giá trị. chuỗi. số] {\n return '' + value;\n}\n","token". [{"loại". "T_FUNCTION","bối cảnh". "giá trị bình thường". "chức năng","dòng". 1, "bắt đầu". 0,"kết thúc". 8},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "stringifyBasicValue","dòng". 1, "bắt đầu". 9,"kết thúc". 28},{"loại". "T_LPAREN","bối cảnh". "giá trị bình thường". "[","dòng". 1, "bắt đầu". 28,"kết thúc". 29},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "giá trị","dòng". 1, "bắt đầu". 29,"kết thúc". 34},{"loại". "T_COLON","bối cảnh". "loại","giá trị". ". ","dòng". 1, "bắt đầu". 34,"kết thúc". 35},{"loại". "T_STRING_TYPE","ngữ cảnh". "loại","giá trị". "chuỗi","dòng". 1, "bắt đầu". 36,"kết thúc". 42},{"loại". "T_BIT_OR","ngữ cảnh". "loại","giá trị". ". ","dòng". 1, "bắt đầu". 43,"kết thúc". 44},{"loại". "T_NUMBER_TYPE","ngữ cảnh". "loại","giá trị". "số","dòng". 1, "bắt đầu". 45,"kết thúc". 51},{"loại". "T_RPAREN","bối cảnh". "giá trị bình thường". "]","dòng". 1, "bắt đầu". 51,"kết thúc". 52},{"loại". "T_LCURLY","ngữ cảnh". "giá trị bình thường". "{","dòng". 1, "bắt đầu". 53,"kết thúc". 54},{"loại". "T_RETURN","bối cảnh". "giá trị bình thường". "dòng phản hồi". 2, "bắt đầu". 57,"kết thúc". 63},{"loại". "T_STRING","ngữ cảnh". "giá trị bình thường". "''","dòng". 2, "bắt đầu". 64,"kết thúc". 66},{"loại". "T_PLUS","bối cảnh". "giá trị bình thường". "+","dòng". 2, "bắt đầu". 67,"kết thúc". 68},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "giá trị","dòng". 2, "bắt đầu". 69,"kết thúc". 74},{"loại". "T_SEMICOLON","bối cảnh". "giá trị bình thường". ";","dòng". 2, "bắt đầu". 74,"kết thúc". 75},{"loại". "T_RCURLY","ngữ cảnh". "giá trị bình thường". "}","dòng". 3, "bắt đầu". 76,"kết thúc". 77}],"lỗi". []}
Một loại dựa trên loại khác
Ở đây, kiểu trả về sẽ giống với kiểu của bất kỳ giá trị nào được truyền vào hàm
1 2 3
function identity[value: T]: T {
return value;
}
{"value":"function identity[value: T]: T {\n return value;\n}\n","tokens":[{"type":"T_FUNCTION","context":"normal","value":"function","line":1,"start":0,"end":8},{"type":"T_IDENTIFIER","context":"normal","value":"identity","line":1,"start":9,"end":17},{"type":"T_LESS_THAN","context":"type","value":"","line":1,"start":19,"end":20},{"type":"T_LPAREN","context":"normal","value":"[","line":1,"start":20,"end":21},{"type":"T_IDENTIFIER","context":"normal","value":"value","line":1,"start":21,"end":26},{"type":"T_COLON","context":"type","value":":","line":1,"start":26,"end":27},{"type":"T_IDENTIFIER","context":"type","value":"T","line":1,"start":28,"end":29},{"type":"T_RPAREN","context":"normal","value":"]","line":1,"start":29,"end":30},{"type":"T_COLON","context":"type","value":":","line":1,"start":30,"end":31},{"type":"T_IDENTIFIER","context":"type","value":"T","line":1,"start":32,"end":33},{"type":"T_LCURLY","context":"normal","value":"{","line":1,"start":34,"end":35},{"type":"T_RETURN","context":"normal","value":"return","line":2,"start":38,"end":44},{"type":"T_IDENTIFIER","context":"normal","value":"value","line":2,"start":45,"end":50},{"type":"T_SEMICOLON","context":"normal","value":";","line":2,"start":50,"end":51},{"type":"T_RCURLY","context":"normal","value":"}","line":3,"start":52,"end":53}],"errors":[]}
Ba loại này là các loại phổ biến nhất. Chúng sẽ chiếm phần lớn các loại bạn sẽ viết
Tuy nhiên, cũng có một loại thứ tư
Một loại tùy ý có thể là bất cứ điều gì
Ở đây, giá trị được truyền vào là một loại không xác định, nó có thể là bất kỳ loại nào và hàm vẫn hoạt động
1 2 3
function getTypeOf[value: mixed]: string {
return typeof value;
}
{"giá trị". "hàm getTypeOf[giá trị. Trộn]. chuỗi {\n trả về giá trị typeof;\n}\n","token". [{"loại". "T_FUNCTION","bối cảnh". "giá trị bình thường". "chức năng","dòng". 1, "bắt đầu". 0,"kết thúc". 8},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "getTypeOf","dòng". 1, "bắt đầu". 9,"kết thúc". 18},{"loại". "T_LPAREN","bối cảnh". "giá trị bình thường". "[","dòng". 1, "bắt đầu". 18,"kết thúc". 19},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "giá trị","dòng". 1, "bắt đầu". 19,"kết thúc". 24},{"loại". "T_COLON","bối cảnh". "loại","giá trị". ". ","dòng". 1, "bắt đầu". 24,"kết thúc". 25},{"loại". "T_MIXED_TYPE","ngữ cảnh". "loại","giá trị". "hỗn hợp","dòng". 1, "bắt đầu". 26,"kết thúc". 31},{"loại". "T_RPAREN","bối cảnh". "giá trị bình thường". "]","dòng". 1, "bắt đầu". 31,"kết thúc". 32},{"loại". "T_COLON","bối cảnh". "loại","giá trị". ". ","dòng". 1, "bắt đầu". 32,"kết thúc". 33},{"loại". "T_STRING_TYPE","ngữ cảnh". "loại","giá trị". "chuỗi","dòng". 1, "bắt đầu". 34,"kết thúc". 40},{"loại". "T_LCURLY","ngữ cảnh". "giá trị bình thường". "{","dòng". 1, "bắt đầu". 41,"kết thúc". 42},{"loại". "T_RETURN","bối cảnh". "giá trị bình thường". "dòng phản hồi". 2, "bắt đầu". 45,"kết thúc". 51},{"loại". "T_TYPEOF","ngữ cảnh". "giá trị bình thường". "typeof","dòng". 2, "bắt đầu". 52,"kết thúc". 58},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "giá trị","dòng". 2, "bắt đầu". 59,"kết thúc". 64},{"loại". "T_SEMICOLON","bối cảnh". "giá trị bình thường". ";","dòng". 2, "bắt đầu". 64,"kết thúc". 65},{"loại". "T_RCURLY","ngữ cảnh". "giá trị bình thường". "}","dòng". 3, "bắt đầu". 66,"kết thúc". 67}],"lỗi". []}
Những loại không xác định này ít phổ biến hơn, nhưng đôi khi vẫn hữu ích
Bạn nên đại diện cho những giá trị này với
function square[n: number] {
return n * n;
}
7Bất cứ điều gì đi vào, không có gì đi ra
function square[n: number] {
return n * n;
}
7 sẽ chấp nhận mọi loại giá trị. Chuỗi, số, đối tượng, hàm– mọi thứ sẽ hoạt độngfunction square[n: number] {
return n * n;
}
0function square[n: number] {
return n * n;
}
1{"giá trị". "// @flow\nfunction stringify[giá trị. hỗn hợp] {\n //. \n}\n\nstringify[\"foo\"];\nstringify[3. 14];\nstringify[null];\nstringify[{}];\n","mã thông báo". [{"loại". "Dòng","bối cảnh". "bình luận","giá trị". "// @flow","dòng". 1, "bắt đầu". 0,"kết thúc". 8},{"loại". "T_FUNCTION","bối cảnh". "giá trị bình thường". "chức năng","dòng". 2, "bắt đầu". 9,"kết thúc". 17},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "xâu chuỗi","dòng". 2, "bắt đầu". 18,"kết thúc". 27},{"loại". "T_LPAREN","bối cảnh". "giá trị bình thường". "[","dòng". 2, "bắt đầu". 27,"kết thúc". 28},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "giá trị","dòng". 2, "bắt đầu". 28,"kết thúc". 33},{"loại". "T_COLON","bối cảnh". "loại","giá trị". ". ","dòng". 2, "bắt đầu". 33,"kết thúc". 34},{"loại". "T_MIXED_TYPE","ngữ cảnh". "loại","giá trị". "hỗn hợp","dòng". 2, "bắt đầu". 35,"kết thúc". 40},{"loại". "T_RPAREN","bối cảnh". "giá trị bình thường". "]","dòng". 2, "bắt đầu". 40,"kết thúc". 41},{"loại". "T_LCURLY","ngữ cảnh". "giá trị bình thường". "{","dòng". 2, "bắt đầu". 42,"kết thúc". 43},{"loại". "Dòng","bối cảnh". "bình luận","giá trị". "//. ","dòng". 3, "bắt đầu". 46,"kết thúc". 52},{"loại". "T_RCURLY","ngữ cảnh". "giá trị bình thường". "}","dòng". 4, "bắt đầu". 53,"kết thúc". 54},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "xâu chuỗi","dòng". 6, "bắt đầu". 56,"kết thúc". 65},{"loại". "T_LPAREN","bối cảnh". "giá trị bình thường". "[","dòng". 6, "bắt đầu". 65,"kết thúc". 66},{"loại". "T_STRING","ngữ cảnh". "giá trị bình thường". "\"foo\"","dòng". 6, "bắt đầu". 66,"kết thúc". 71},{"loại". "T_RPAREN","bối cảnh". "giá trị bình thường". "]","dòng". 6, "bắt đầu". 71,"kết thúc". 72},{"loại". "T_SEMICOLON","bối cảnh". "giá trị bình thường". ";","dòng". 6, "bắt đầu". 72,"kết thúc". 73},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "xâu chuỗi","dòng". 7, "bắt đầu". 74,"kết thúc". 83},{"loại". "T_LPAREN","bối cảnh". "giá trị bình thường". "[","dòng". 7, "bắt đầu". 83,"kết thúc". 84},{"loại". "T_NUMBER","ngữ cảnh". "giá trị bình thường". "3. 14","dòng". 7, "bắt đầu". 84,"kết thúc". 88},{"loại". "T_RPAREN","bối cảnh". "giá trị bình thường". "]","dòng". 7, "bắt đầu". 88,"kết thúc". 89},{"loại". "T_SEMICOLON","bối cảnh". "giá trị bình thường". ";","dòng". 7, "bắt đầu". 89,"kết thúc". 90},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "xâu chuỗi","dòng". 8,"bắt đầu". 91,"kết thúc". 100},{"loại". "T_LPAREN","bối cảnh". "giá trị bình thường". "[","dòng". 8,"bắt đầu". 100,"kết thúc". 101},{"loại". "T_NULL","bối cảnh". "giá trị bình thường". "null","dòng". 8,"bắt đầu". 101,"kết thúc". 105},{"loại". "T_RPAREN","bối cảnh". "giá trị bình thường". "]","dòng". 8,"bắt đầu". 105,"kết thúc". 106},{"loại". "T_SEMICOLON","bối cảnh". "giá trị bình thường". ";","dòng". 8,"bắt đầu". 106,"kết thúc". 107},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "xâu chuỗi","dòng". 9,"bắt đầu". 108,"kết thúc". 117},{"loại". "T_LPAREN","bối cảnh". "giá trị bình thường". "[","dòng". 9,"bắt đầu". 117,"kết thúc". 118},{"loại". "T_LCURLY","context". "normal","value". "{","line". 9,"start". 118,"end". 119},{"type". "T_RCURLY","context". "normal","value". "}","line". 9,"start". 119,"end". 120},{"type". "T_RPAREN","context". "normal","value". "]","line". 9,"start". 120,"end". 121},{"type". "T_SEMICOLON","context". "normal","value". ";","line". 9,"start". 121,"kết thúc". 122}],"errors". []}
When you try to use a value of a
function square[n: number] {
return n * n;
}
7 type you must first figure out what the actual type is or you’ll end up with an errorfunction square[n: number] {
return n * n;
}
0function square[n: number] {
return n * n;
}
1Cannot add empty string and `value` because mixed [1] could either behave like a string or like a number. [unclear-addition]
{"value". "// @flow\nfunction stringify[value. mixed] {\n // $ExpectError\n return \"\" + value; // Error. \n}\n\nstringify[\"foo\"];\n","tokens". [{"type". "Line","context". "comment","value". "// @flow","line". 1,"start". 0,"end". 8},{"type". "T_FUNCTION","context". "normal","value". "function","line". 2,"start". 9,"end". 17},{"type". "T_IDENTIFIER","context". "normal","value". "stringify","line". 2,"start". 18,"end". 27},{"type". "T_LPAREN","context". "normal","value". "[","line". 2,"start". 27,"end". 28},{"type". "T_IDENTIFIER","context". "normal","value". "value","line". 2,"start". 28,"end". 33},{"type". "T_COLON","context". "type","value". ". ","line". 2,"start". 33,"end". 34},{"type". "T_MIXED_TYPE","context". "type","value". "mixed","line". 2,"start". 35,"end". 40},{"type". "T_RPAREN","context". "normal","value". "]","line". 2, "bắt đầu". 40,"end". 41},{"type". "T_LCURLY","context". "normal","value". "{","line". 2,"start". 42,"end". 43},{"type". "Line","context". "comment","value". "// $ExpectError","line". 3,"start". 46,"kết thúc". 61},{"loại". "T_RETURN","context". "normal","value". "dòng phản hồi". 4, "bắt đầu". 64,"kết thúc". 70},{"loại". "T_STRING","ngữ cảnh". "giá trị bình thường". "\"\"","dòng". 4, "bắt đầu". 71,"kết thúc". 73},{"loại". "T_PLUS","bối cảnh". "giá trị bình thường". "+","dòng". 4, "bắt đầu". 74,"kết thúc". 75},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "giá trị","dòng". 4, "bắt đầu". 76,"kết thúc". 81},{"loại". "T_SEMICOLON","bối cảnh". "giá trị bình thường". ";","dòng". 4, "bắt đầu". 81,"kết thúc". 82},{"loại". "Dòng","bối cảnh". "bình luận","giá trị". "// Lỗi. ","dòng". 4, "bắt đầu". 83,"kết thúc". 92},{"loại". "T_RCURLY","ngữ cảnh". "giá trị bình thường". "}","dòng". 5, "bắt đầu". 93,"kết thúc". 94},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "xâu chuỗi","dòng". 7, "bắt đầu". 96,"kết thúc". 105},{"loại". "T_LPAREN","bối cảnh". "giá trị bình thường". "[","dòng". 7, "bắt đầu". 105,"kết thúc". 106},{"loại". "T_STRING","ngữ cảnh". "giá trị bình thường". "\"foo\"","dòng". 7, "bắt đầu". 106,"kết thúc". 111},{"loại". "T_RPAREN","bối cảnh". "giá trị bình thường". "]","dòng". 7, "bắt đầu". 111,"kết thúc". 112},{"loại". "T_SEMICOLON","bối cảnh". "giá trị bình thường". ";","dòng". 7, "bắt đầu". 112,"kết thúc". 113}],"lỗi". [{"Tôi". "E1","tin nhắn". [{"Tôi". "E1M1","mô tả". "Không thể thêm chuỗi rỗng và `giá trị` vì hỗn hợp [1] có thể hoạt động giống như một chuỗi hoặc giống như một số. [bổ sung không rõ ràng]","bối cảnh". " trả về \"\" + giá trị; // Lỗi. ","nguồn". "-","bắt đầu". {"dòng". 4,"cột". 15,"bù đắp". 76},"kết thúc". {"dòng". 4,"cột". 19,"bù đắp". 81}}],"hoạt động". vô giá trị}]}
Thay vào đó, bạn phải đảm bảo giá trị là một loại nhất định bằng cách tinh chỉnh nó
function square[n: number] {
return n * n;
}
2____03{"giá trị". "// @flow\nfunction stringify[giá trị. hỗn hợp] {\n if [typeof value === 'string'] {\n return \"\" + value; . \n } other {\n return \"\";\n }\n}\n\nstringify[\"foo\"];\n","tokens". [{"loại". "Dòng","bối cảnh". "bình luận","giá trị". "// @flow","dòng". 1, "bắt đầu". 0,"kết thúc". 8},{"loại". "T_FUNCTION","bối cảnh". "giá trị bình thường". "chức năng","dòng". 2, "bắt đầu". 9,"kết thúc". 17},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "xâu chuỗi","dòng". 2, "bắt đầu". 18,"kết thúc". 27},{"loại". "T_LPAREN","bối cảnh". "giá trị bình thường". "[","dòng". 2, "bắt đầu". 27,"kết thúc". 28},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "giá trị","dòng". 2, "bắt đầu". 28,"kết thúc". 33},{"loại". "T_COLON","bối cảnh". "loại","giá trị". ". ","dòng". 2, "bắt đầu". 33,"kết thúc". 34},{"loại". "T_MIXED_TYPE","ngữ cảnh". "loại","giá trị". "hỗn hợp","dòng". 2, "bắt đầu". 35,"kết thúc". 40},{"loại". "T_RPAREN","bối cảnh". "giá trị bình thường". "]","dòng". 2, "bắt đầu". 40,"kết thúc". 41},{"loại". "T_LCURLY","ngữ cảnh". "giá trị bình thường". "{","dòng". 2, "bắt đầu". 42,"kết thúc". 43},{"loại". "T_IF","bối cảnh". "giá trị bình thường". "nếu","dòng". 3, "bắt đầu". 46,"kết thúc". 48},{"loại". "T_LPAREN","bối cảnh". "giá trị bình thường". "[","dòng". 3, "bắt đầu". 49,"kết thúc". 50},{"loại". "T_TYPEOF","ngữ cảnh". "giá trị bình thường". "typeof","dòng". 3, "bắt đầu". 50,"kết thúc". 56},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "giá trị","dòng". 3, "bắt đầu". 57,"kết thúc". 62},{"loại". "T_STRICT_EQUAL","bối cảnh". "giá trị bình thường". "===","dòng". 3, "bắt đầu". 63,"kết thúc". 66},{"loại". "T_STRING","ngữ cảnh". "giá trị bình thường". "'chuỗi'","dòng". 3, "bắt đầu". 67,"kết thúc". 75},{"loại". "T_RPAREN","bối cảnh". "giá trị bình thường". "]","dòng". 3, "bắt đầu". 75,"kết thúc". 76},{"loại". "T_LCURLY","ngữ cảnh". "giá trị bình thường". "{","dòng". 3, "bắt đầu". 77,"kết thúc". 78},{"loại". "T_RETURN","bối cảnh". "giá trị bình thường". "dòng phản hồi". 4, "bắt đầu". 83,"kết thúc". 89},{"loại". "T_STRING","ngữ cảnh". "giá trị bình thường". "\"\"","dòng". 4, "bắt đầu". 90,"kết thúc". 92},{"loại". "T_PLUS","bối cảnh". "giá trị bình thường". "+","dòng". 4, "bắt đầu". 93,"kết thúc". 94},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "giá trị","dòng". 4, "bắt đầu". 95,"kết thúc". 100},{"loại". "T_SEMICOLON","bối cảnh". "giá trị bình thường". ";","dòng". 4, "bắt đầu". 100,"kết thúc". 101},{"loại". "Dòng","bối cảnh". "bình luận","giá trị". "// Làm. ","dòng". 4, "bắt đầu". 102,"kết thúc". 111},{"loại". "T_RCURLY","ngữ cảnh". "giá trị bình thường". "}","dòng". 5, "bắt đầu". 114,"kết thúc". 115},{"loại". "T_ELSE","bối cảnh". "giá trị bình thường". "khác","dòng". 5, "bắt đầu". 116,"kết thúc". 120},{"loại". "T_LCURLY","ngữ cảnh". "giá trị bình thường". "{","dòng". 5, "bắt đầu". 121,"kết thúc". 122},{"loại". "T_RETURN","bối cảnh". "giá trị bình thường". "dòng phản hồi". 6, "bắt đầu". 127,"kết thúc". 133},{"loại". "T_STRING","ngữ cảnh". "giá trị bình thường". "\"\"","dòng". 6, "bắt đầu". 134,"kết thúc". 136},{"loại". "T_SEMICOLON","bối cảnh". "giá trị bình thường". ";","dòng". 6, "bắt đầu". 136,"kết thúc". 137},{"loại". "T_RCURLY","ngữ cảnh". "giá trị bình thường". "}","dòng". 7, "bắt đầu". 140,"kết thúc". 141},{"loại". "T_RCURLY","ngữ cảnh". "giá trị bình thường". "}","dòng". 8,"bắt đầu". 142,"kết thúc". 143},{"loại". "T_IDENTIFIER","bối cảnh". "giá trị bình thường". "xâu chuỗi","dòng". 10,"bắt đầu". 145,"kết thúc". 154},{"loại". "T_LPAREN","bối cảnh". "giá trị bình thường". "[","dòng". 10,"bắt đầu". 154,"kết thúc". 155},{"loại". "T_STRING","ngữ cảnh". "giá trị bình thường". "\"foo\"","dòng". 10,"bắt đầu". 155,"kết thúc". 160},{"loại". "T_RPAREN","bối cảnh". "giá trị bình thường". "]","dòng". 10,"bắt đầu". 160,"kết thúc". 161},{"loại". "T_SEMICOLON","bối cảnh". "giá trị bình thường". ";","dòng". 10,"bắt đầu". 161,"kết thúc". 162}],"lỗi". []}
Do kiểm tra
1 2 30, Flow biết rằng
1 2 31 chỉ có thể là một
function square[n: number] {
return n * n;
}
5 bên trong câu lệnh 1 2 33. Đây được gọi là một sàng lọc