Skip to content

Commit 76f444e

Browse files
authored
Allow nonnull assertions in references (#29351)
1 parent 52b8256 commit 76f444e

File tree

6 files changed

+555
-1
lines changed

6 files changed

+555
-1
lines changed

src/compiler/binder.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -753,7 +753,7 @@ namespace ts {
753753

754754
function isNarrowableReference(expr: Expression): boolean {
755755
return expr.kind === SyntaxKind.Identifier || expr.kind === SyntaxKind.ThisKeyword || expr.kind === SyntaxKind.SuperKeyword ||
756-
isPropertyAccessExpression(expr) && isNarrowableReference(expr.expression) ||
756+
(isPropertyAccessExpression(expr) || isNonNullExpression(expr) || isParenthesizedExpression(expr)) && isNarrowableReference(expr.expression) ||
757757
isElementAccessExpression(expr) && expr.argumentExpression &&
758758
(isStringLiteral(expr.argumentExpression) || isNumericLiteral(expr.argumentExpression)) &&
759759
isNarrowableReference(expr.expression);

src/compiler/checker.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14773,6 +14773,9 @@ namespace ts {
1477314773
return symbol !== unknownSymbol ? (isConstraintPosition(node) ? "@" : "") + getSymbolId(symbol) : undefined;
1477414774
case SyntaxKind.ThisKeyword:
1477514775
return "0";
14776+
case SyntaxKind.NonNullExpression:
14777+
case SyntaxKind.ParenthesizedExpression:
14778+
return getFlowCacheKey((<NonNullExpression | ParenthesizedExpression>node).expression);
1477614779
case SyntaxKind.PropertyAccessExpression:
1477714780
case SyntaxKind.ElementAccessExpression:
1477814781
const propName = getAccessedPropertyName(<AccessExpression>node);
@@ -14785,6 +14788,11 @@ namespace ts {
1478514788
}
1478614789

1478714790
function isMatchingReference(source: Node, target: Node): boolean {
14791+
switch (target.kind) {
14792+
case SyntaxKind.ParenthesizedExpression:
14793+
case SyntaxKind.NonNullExpression:
14794+
return isMatchingReference(source, (target as NonNullExpression | ParenthesizedExpression).expression);
14795+
}
1478814796
switch (source.kind) {
1478914797
case SyntaxKind.Identifier:
1479014798
return target.kind === SyntaxKind.Identifier && getResolvedSymbol(<Identifier>source) === getResolvedSymbol(<Identifier>target) ||
@@ -14794,6 +14802,9 @@ namespace ts {
1479414802
return target.kind === SyntaxKind.ThisKeyword;
1479514803
case SyntaxKind.SuperKeyword:
1479614804
return target.kind === SyntaxKind.SuperKeyword;
14805+
case SyntaxKind.NonNullExpression:
14806+
case SyntaxKind.ParenthesizedExpression:
14807+
return isMatchingReference((source as NonNullExpression | ParenthesizedExpression).expression, target);
1479714808
case SyntaxKind.PropertyAccessExpression:
1479814809
case SyntaxKind.ElementAccessExpression:
1479914810
return isAccessExpression(target) &&
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
//// [nonNullReferenceMatching.ts]
2+
type ElementRef = (element: HTMLElement | null) => void;
3+
4+
type ThumbProps = {
5+
elementRef?: ElementRef;
6+
}
7+
8+
type ComponentProps = {
9+
thumbYProps?: ThumbProps;
10+
thumbXProps: ThumbProps;
11+
}
12+
13+
class Component {
14+
props!: ComponentProps;
15+
public thumbYElementRef = (ref: HTMLElement | null) => {
16+
typeof this.props.thumbYProps!.elementRef === 'function' && this.props.thumbYProps!.elementRef(ref);
17+
18+
typeof (this.props.thumbYProps!.elementRef) === 'function' && this.props.thumbYProps!.elementRef(ref);
19+
20+
typeof ((this.props).thumbYProps!.elementRef)! === 'function' && this.props.thumbYProps!.elementRef(ref);
21+
22+
typeof this.props.thumbXProps.elementRef === 'function' && this.props.thumbXProps.elementRef(ref);
23+
24+
typeof this.props.thumbXProps.elementRef === 'function' && (this.props).thumbXProps.elementRef(ref);
25+
26+
typeof this.props.thumbXProps.elementRef === 'function' && (this.props.thumbXProps).elementRef(ref);
27+
28+
typeof this.props.thumbXProps.elementRef === 'function' && ((this.props)!.thumbXProps)!.elementRef(ref);
29+
30+
typeof (this.props.thumbXProps).elementRef === 'function' && ((this.props)!.thumbXProps)!.elementRef(ref);
31+
32+
typeof this.props!.thumbXProps!.elementRef === 'function' && ((this.props)!.thumbXProps)!.elementRef(ref);
33+
};
34+
}
35+
36+
//// [nonNullReferenceMatching.js]
37+
"use strict";
38+
var Component = /** @class */ (function () {
39+
function Component() {
40+
var _this = this;
41+
this.thumbYElementRef = function (ref) {
42+
typeof _this.props.thumbYProps.elementRef === 'function' && _this.props.thumbYProps.elementRef(ref);
43+
typeof (_this.props.thumbYProps.elementRef) === 'function' && _this.props.thumbYProps.elementRef(ref);
44+
typeof ((_this.props).thumbYProps.elementRef) === 'function' && _this.props.thumbYProps.elementRef(ref);
45+
typeof _this.props.thumbXProps.elementRef === 'function' && _this.props.thumbXProps.elementRef(ref);
46+
typeof _this.props.thumbXProps.elementRef === 'function' && (_this.props).thumbXProps.elementRef(ref);
47+
typeof _this.props.thumbXProps.elementRef === 'function' && (_this.props.thumbXProps).elementRef(ref);
48+
typeof _this.props.thumbXProps.elementRef === 'function' && ((_this.props).thumbXProps).elementRef(ref);
49+
typeof (_this.props.thumbXProps).elementRef === 'function' && ((_this.props).thumbXProps).elementRef(ref);
50+
typeof _this.props.thumbXProps.elementRef === 'function' && ((_this.props).thumbXProps).elementRef(ref);
51+
};
52+
}
53+
return Component;
54+
}());
Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
=== tests/cases/compiler/nonNullReferenceMatching.ts ===
2+
type ElementRef = (element: HTMLElement | null) => void;
3+
>ElementRef : Symbol(ElementRef, Decl(nonNullReferenceMatching.ts, 0, 0))
4+
>element : Symbol(element, Decl(nonNullReferenceMatching.ts, 0, 19))
5+
>HTMLElement : Symbol(HTMLElement, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --))
6+
7+
type ThumbProps = {
8+
>ThumbProps : Symbol(ThumbProps, Decl(nonNullReferenceMatching.ts, 0, 56))
9+
10+
elementRef?: ElementRef;
11+
>elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
12+
>ElementRef : Symbol(ElementRef, Decl(nonNullReferenceMatching.ts, 0, 0))
13+
}
14+
15+
type ComponentProps = {
16+
>ComponentProps : Symbol(ComponentProps, Decl(nonNullReferenceMatching.ts, 4, 1))
17+
18+
thumbYProps?: ThumbProps;
19+
>thumbYProps : Symbol(thumbYProps, Decl(nonNullReferenceMatching.ts, 6, 23))
20+
>ThumbProps : Symbol(ThumbProps, Decl(nonNullReferenceMatching.ts, 0, 56))
21+
22+
thumbXProps: ThumbProps;
23+
>thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
24+
>ThumbProps : Symbol(ThumbProps, Decl(nonNullReferenceMatching.ts, 0, 56))
25+
}
26+
27+
class Component {
28+
>Component : Symbol(Component, Decl(nonNullReferenceMatching.ts, 9, 1))
29+
30+
props!: ComponentProps;
31+
>props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
32+
>ComponentProps : Symbol(ComponentProps, Decl(nonNullReferenceMatching.ts, 4, 1))
33+
34+
public thumbYElementRef = (ref: HTMLElement | null) => {
35+
>thumbYElementRef : Symbol(Component.thumbYElementRef, Decl(nonNullReferenceMatching.ts, 12, 27))
36+
>ref : Symbol(ref, Decl(nonNullReferenceMatching.ts, 13, 31))
37+
>HTMLElement : Symbol(HTMLElement, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --))
38+
39+
typeof this.props.thumbYProps!.elementRef === 'function' && this.props.thumbYProps!.elementRef(ref);
40+
>this.props.thumbYProps!.elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
41+
>this.props.thumbYProps : Symbol(thumbYProps, Decl(nonNullReferenceMatching.ts, 6, 23))
42+
>this.props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
43+
>this : Symbol(Component, Decl(nonNullReferenceMatching.ts, 9, 1))
44+
>props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
45+
>thumbYProps : Symbol(thumbYProps, Decl(nonNullReferenceMatching.ts, 6, 23))
46+
>elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
47+
>this.props.thumbYProps!.elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
48+
>this.props.thumbYProps : Symbol(thumbYProps, Decl(nonNullReferenceMatching.ts, 6, 23))
49+
>this.props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
50+
>this : Symbol(Component, Decl(nonNullReferenceMatching.ts, 9, 1))
51+
>props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
52+
>thumbYProps : Symbol(thumbYProps, Decl(nonNullReferenceMatching.ts, 6, 23))
53+
>elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
54+
>ref : Symbol(ref, Decl(nonNullReferenceMatching.ts, 13, 31))
55+
56+
typeof (this.props.thumbYProps!.elementRef) === 'function' && this.props.thumbYProps!.elementRef(ref);
57+
>this.props.thumbYProps!.elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
58+
>this.props.thumbYProps : Symbol(thumbYProps, Decl(nonNullReferenceMatching.ts, 6, 23))
59+
>this.props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
60+
>this : Symbol(Component, Decl(nonNullReferenceMatching.ts, 9, 1))
61+
>props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
62+
>thumbYProps : Symbol(thumbYProps, Decl(nonNullReferenceMatching.ts, 6, 23))
63+
>elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
64+
>this.props.thumbYProps!.elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
65+
>this.props.thumbYProps : Symbol(thumbYProps, Decl(nonNullReferenceMatching.ts, 6, 23))
66+
>this.props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
67+
>this : Symbol(Component, Decl(nonNullReferenceMatching.ts, 9, 1))
68+
>props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
69+
>thumbYProps : Symbol(thumbYProps, Decl(nonNullReferenceMatching.ts, 6, 23))
70+
>elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
71+
>ref : Symbol(ref, Decl(nonNullReferenceMatching.ts, 13, 31))
72+
73+
typeof ((this.props).thumbYProps!.elementRef)! === 'function' && this.props.thumbYProps!.elementRef(ref);
74+
>(this.props).thumbYProps!.elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
75+
>(this.props).thumbYProps : Symbol(thumbYProps, Decl(nonNullReferenceMatching.ts, 6, 23))
76+
>this.props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
77+
>this : Symbol(Component, Decl(nonNullReferenceMatching.ts, 9, 1))
78+
>props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
79+
>thumbYProps : Symbol(thumbYProps, Decl(nonNullReferenceMatching.ts, 6, 23))
80+
>elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
81+
>this.props.thumbYProps!.elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
82+
>this.props.thumbYProps : Symbol(thumbYProps, Decl(nonNullReferenceMatching.ts, 6, 23))
83+
>this.props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
84+
>this : Symbol(Component, Decl(nonNullReferenceMatching.ts, 9, 1))
85+
>props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
86+
>thumbYProps : Symbol(thumbYProps, Decl(nonNullReferenceMatching.ts, 6, 23))
87+
>elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
88+
>ref : Symbol(ref, Decl(nonNullReferenceMatching.ts, 13, 31))
89+
90+
typeof this.props.thumbXProps.elementRef === 'function' && this.props.thumbXProps.elementRef(ref);
91+
>this.props.thumbXProps.elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
92+
>this.props.thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
93+
>this.props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
94+
>this : Symbol(Component, Decl(nonNullReferenceMatching.ts, 9, 1))
95+
>props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
96+
>thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
97+
>elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
98+
>this.props.thumbXProps.elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
99+
>this.props.thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
100+
>this.props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
101+
>this : Symbol(Component, Decl(nonNullReferenceMatching.ts, 9, 1))
102+
>props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
103+
>thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
104+
>elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
105+
>ref : Symbol(ref, Decl(nonNullReferenceMatching.ts, 13, 31))
106+
107+
typeof this.props.thumbXProps.elementRef === 'function' && (this.props).thumbXProps.elementRef(ref);
108+
>this.props.thumbXProps.elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
109+
>this.props.thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
110+
>this.props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
111+
>this : Symbol(Component, Decl(nonNullReferenceMatching.ts, 9, 1))
112+
>props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
113+
>thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
114+
>elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
115+
>(this.props).thumbXProps.elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
116+
>(this.props).thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
117+
>this.props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
118+
>this : Symbol(Component, Decl(nonNullReferenceMatching.ts, 9, 1))
119+
>props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
120+
>thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
121+
>elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
122+
>ref : Symbol(ref, Decl(nonNullReferenceMatching.ts, 13, 31))
123+
124+
typeof this.props.thumbXProps.elementRef === 'function' && (this.props.thumbXProps).elementRef(ref);
125+
>this.props.thumbXProps.elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
126+
>this.props.thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
127+
>this.props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
128+
>this : Symbol(Component, Decl(nonNullReferenceMatching.ts, 9, 1))
129+
>props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
130+
>thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
131+
>elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
132+
>(this.props.thumbXProps).elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
133+
>this.props.thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
134+
>this.props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
135+
>this : Symbol(Component, Decl(nonNullReferenceMatching.ts, 9, 1))
136+
>props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
137+
>thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
138+
>elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
139+
>ref : Symbol(ref, Decl(nonNullReferenceMatching.ts, 13, 31))
140+
141+
typeof this.props.thumbXProps.elementRef === 'function' && ((this.props)!.thumbXProps)!.elementRef(ref);
142+
>this.props.thumbXProps.elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
143+
>this.props.thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
144+
>this.props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
145+
>this : Symbol(Component, Decl(nonNullReferenceMatching.ts, 9, 1))
146+
>props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
147+
>thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
148+
>elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
149+
>((this.props)!.thumbXProps)!.elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
150+
>(this.props)!.thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
151+
>this.props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
152+
>this : Symbol(Component, Decl(nonNullReferenceMatching.ts, 9, 1))
153+
>props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
154+
>thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
155+
>elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
156+
>ref : Symbol(ref, Decl(nonNullReferenceMatching.ts, 13, 31))
157+
158+
typeof (this.props.thumbXProps).elementRef === 'function' && ((this.props)!.thumbXProps)!.elementRef(ref);
159+
>(this.props.thumbXProps).elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
160+
>this.props.thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
161+
>this.props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
162+
>this : Symbol(Component, Decl(nonNullReferenceMatching.ts, 9, 1))
163+
>props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
164+
>thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
165+
>elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
166+
>((this.props)!.thumbXProps)!.elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
167+
>(this.props)!.thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
168+
>this.props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
169+
>this : Symbol(Component, Decl(nonNullReferenceMatching.ts, 9, 1))
170+
>props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
171+
>thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
172+
>elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
173+
>ref : Symbol(ref, Decl(nonNullReferenceMatching.ts, 13, 31))
174+
175+
typeof this.props!.thumbXProps!.elementRef === 'function' && ((this.props)!.thumbXProps)!.elementRef(ref);
176+
>this.props!.thumbXProps!.elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
177+
>this.props!.thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
178+
>this.props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
179+
>this : Symbol(Component, Decl(nonNullReferenceMatching.ts, 9, 1))
180+
>props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
181+
>thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
182+
>elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
183+
>((this.props)!.thumbXProps)!.elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
184+
>(this.props)!.thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
185+
>this.props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
186+
>this : Symbol(Component, Decl(nonNullReferenceMatching.ts, 9, 1))
187+
>props : Symbol(Component.props, Decl(nonNullReferenceMatching.ts, 11, 17))
188+
>thumbXProps : Symbol(thumbXProps, Decl(nonNullReferenceMatching.ts, 7, 29))
189+
>elementRef : Symbol(elementRef, Decl(nonNullReferenceMatching.ts, 2, 19))
190+
>ref : Symbol(ref, Decl(nonNullReferenceMatching.ts, 13, 31))
191+
192+
};
193+
}

0 commit comments

Comments
 (0)