mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-06 02:33:53 -06:00
Annotate fewer extracted constants with types
Expose `isContextSensitive` from the checker and omit type annotations for expressions for which it returns false.
This commit is contained in:
parent
e9ac87c2d6
commit
9efab94dfd
@ -171,6 +171,7 @@ namespace ts {
|
||||
node = getParseTreeNode(node, isExpression);
|
||||
return node ? getContextualType(node) : undefined;
|
||||
},
|
||||
isContextSensitive,
|
||||
getFullyQualifiedName,
|
||||
getResolvedSignature: (node, candidatesOutArray, theArgumentCount) => {
|
||||
node = getParseTreeNode(node, isCallLikeExpression);
|
||||
|
||||
@ -2739,6 +2739,8 @@ namespace ts {
|
||||
getAugmentedPropertiesOfType(type: Type): Symbol[];
|
||||
getRootSymbols(symbol: Symbol): Symbol[];
|
||||
getContextualType(node: Expression): Type | undefined;
|
||||
/* @internal */ isContextSensitive(node: Expression | MethodDeclaration | ObjectLiteralElementLike | JsxAttributeLike): boolean;
|
||||
|
||||
/**
|
||||
* returns unknownSignature in the case of an error.
|
||||
* @param argumentCount Apparent number of arguments, passed in case of a possibly incomplete call. This should come from an ArgumentListInfo. See `signatureHelp.ts`.
|
||||
|
||||
@ -1004,7 +1004,7 @@ namespace ts.refactor.extractSymbol {
|
||||
const localNameText = getUniqueName(isClassLike(scope) ? "newProperty" : "newLocal", file.text);
|
||||
const isJS = isInJavaScriptFile(scope);
|
||||
|
||||
const variableType = isJS
|
||||
const variableType = isJS || !checker.isContextSensitive(node)
|
||||
? undefined
|
||||
: checker.typeToTypeNode(checker.getContextualType(node), scope, NodeBuilderFlags.NoTruncation);
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ const i = 0;
|
||||
class C {
|
||||
M() {
|
||||
for (let j = 0; j < 10; j++) {
|
||||
const newLocal: any = i + 1;
|
||||
const newLocal = i + 1;
|
||||
x = /*RENAME*/newLocal;
|
||||
}
|
||||
}
|
||||
@ -25,7 +25,7 @@ class C {
|
||||
|
||||
const i = 0;
|
||||
class C {
|
||||
private readonly newProperty: any = i + 1;
|
||||
private readonly newProperty = i + 1;
|
||||
|
||||
M() {
|
||||
for (let j = 0; j < 10; j++) {
|
||||
@ -37,7 +37,7 @@ class C {
|
||||
// ==SCOPE::Extract to constant in global scope==
|
||||
|
||||
const i = 0;
|
||||
const newLocal: any = i + 1;
|
||||
const newLocal = i + 1;
|
||||
class C {
|
||||
M() {
|
||||
for (let j = 0; j < 10; j++) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user