- Notifications
You must be signed in to change notification settings - Fork 670
/
Copy pathassert-nonnull.ts
53 lines (41 loc) · 1.04 KB
/
assert-nonnull.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
exportfunctiontestVar(n: Error|null): Error{
returnn!;
}
classFoo{
bar: Foo|null;
baz: (()=>Foo|null)|null;
}
exportfunctiontestObj(foo: Foo|null): Foo|null{
returnfoo!.bar;
}
exportfunctiontestProp(foo: Foo): Foo{
returnfoo.bar!;
}
exportfunctiontestArr(foo: Array<Foo>|null): Foo{
returnfoo![0];
}
exportfunctiontestElem(foo: Array<Foo|null>): Foo{
returnfoo[0]!;
}
exportfunctiontestAll(foo: Array<Foo|null>|null): Foo{
returnfoo![0]!.bar!;
}
exportfunctiontestAll2(foo: Array<Foo|null>|null): Foo{
returnfoo!![0]!!.bar!!;// 3x AS225: Expression is never 'null'
}
exportfunctiontestFn(fn: (()=>Foo|null)|null): Foo|null{
returnfn!();
}
exportfunctiontestFn2(fn: (()=>Foo|null)|null): Foo|null{
letfn2=fn!;
returnfn2();
}
exportfunctiontestRet(fn: (()=>Foo|null)|null): Foo{
returnfn!()!;
}
exportfunctiontestObjFn(foo: Foo): Foo|null{
returnfoo.baz!();
}
exportfunctiontestObjRet(foo: Foo): Foo{
returnfoo.baz!()!;
}