Skip to content

Commit 04d9c94

Browse files
committed
TypeScript: support unknown static type
1 parent f1539d5 commit 04d9c94

File tree

5 files changed

+18
-0
lines changed

5 files changed

+18
-0
lines changed

javascript/ql/src/semmle/javascript/TypeScript.qll

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2188,6 +2188,11 @@ class TupleType extends ArrayType, @tupletype {
21882188
*/
21892189
class AnyType extends Type, @anytype {}
21902190

2191+
/**
2192+
* The predefined `unknown` type.
2193+
*/
2194+
class UnknownType extends Type, @unknowntype {}
2195+
21912196
/**
21922197
* The predefined `string` type.
21932198
*/

javascript/ql/src/semmlecode.javascript.dbscheme

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -610,6 +610,7 @@ case @type.kind of
610610
| 20 = @thistype
611611
| 21 = @numberliteraltype
612612
| 22 = @stringliteraltype
613+
| 23 = @unknowntype
613614
;
614615

615616
@booleanliteraltype = @truetype | @falsetype;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
| tst.ts:40:5:40:15 | unknownType | unknown |
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import javascript
2+
3+
from Expr e
4+
where e.getType() instanceof UnknownType
5+
select e, e.getType()

javascript/ql/test/library-tests/TypeScript/Types/tst.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,9 @@ const uniqueSymbolType: unique symbol = null;
3232
let objectType: object;
3333
let intersection: string & {x: string};
3434
let tuple: [number, string];
35+
36+
let tupleWithOptionalElement: [number, string, number?];
37+
let emptyTuple: [];
38+
let tupleWithRestElement: [number, ...string[]];
39+
let tupleWithOptionalAndRestElements: [number, string?, ...number[]];
40+
let unknownType: unknown;

0 commit comments

Comments
 (0)