diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 38d50f9d19d..21e7ae28da9 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -7200,15 +7200,15 @@ namespace ts { return symbol.members.get(InternalSymbolName.Index); } - function getIndexDeclarationOfSymbol(symbol: Symbol, kind: IndexKind): SignatureDeclaration { + function getIndexDeclarationOfSymbol(symbol: Symbol, kind: IndexKind): IndexSignatureDeclaration { const syntaxKind = kind === IndexKind.Number ? SyntaxKind.NumberKeyword : SyntaxKind.StringKeyword; const indexSymbol = getIndexSymbol(symbol); if (indexSymbol) { for (const decl of indexSymbol.declarations) { - const node = decl; + const node = cast(decl, isIndexSignatureDeclaration); if (node.parameters.length === 1) { const parameter = node.parameters[0]; - if (parameter && parameter.type && parameter.type.kind === syntaxKind) { + if (parameter.type && parameter.type.kind === syntaxKind) { return node; } } @@ -7218,7 +7218,7 @@ namespace ts { return undefined; } - function createIndexInfo(type: Type, isReadonly: boolean, declaration?: SignatureDeclaration): IndexInfo { + function createIndexInfo(type: Type, isReadonly: boolean, declaration?: IndexSignatureDeclaration): IndexInfo { return { type, isReadonly, declaration }; } diff --git a/src/compiler/types.ts b/src/compiler/types.ts index f820201063c..d9305c23b3e 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -3968,7 +3968,7 @@ namespace ts { export interface IndexInfo { type: Type; isReadonly: boolean; - declaration?: SignatureDeclaration; + declaration?: IndexSignatureDeclaration; } /* @internal */ diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 89c1b54eec5..05ad706c56f 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -2249,7 +2249,7 @@ declare namespace ts { interface IndexInfo { type: Type; isReadonly: boolean; - declaration?: SignatureDeclaration; + declaration?: IndexSignatureDeclaration; } enum InferencePriority { NakedTypeVariable = 1, diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index dbb4d6cc7bf..2278e8bb509 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -2249,7 +2249,7 @@ declare namespace ts { interface IndexInfo { type: Type; isReadonly: boolean; - declaration?: SignatureDeclaration; + declaration?: IndexSignatureDeclaration; } enum InferencePriority { NakedTypeVariable = 1,