(signature)
| 59981 | return getSignatureInstantiation(signature, ts.map(signature.typeParameters, function (tp) { return tp.target && !getConstraintOfTypeParameter(tp.target) ? tp.target : tp; }), ts.isInJSFile(signature.declaration)); |
| 59982 | } |
| 59983 | function getBaseSignature(signature) { |
| 59984 | var typeParameters = signature.typeParameters; |
| 59985 | if (typeParameters) { |
| 59986 | if (signature.baseSignatureCache) { |
| 59987 | return signature.baseSignatureCache; |
| 59988 | } |
| 59989 | var typeEraser = createTypeEraser(typeParameters); |
| 59990 | var baseConstraintMapper_1 = createTypeMapper(typeParameters, ts.map(typeParameters, function (tp) { return getConstraintOfTypeParameter(tp) || unknownType; })); |
| 59991 | var baseConstraints = ts.map(typeParameters, function (tp) { return instantiateType(tp, baseConstraintMapper_1) || unknownType; }); |
| 59992 | // Run N type params thru the immediate constraint mapper up to N times |
| 59993 | // This way any noncircular interdependent type parameters are definitely resolved to their external dependencies |
| 59994 | for (var i = 0; i < typeParameters.length - 1; i++) { |
| 59995 | baseConstraints = instantiateTypes(baseConstraints, baseConstraintMapper_1); |
| 59996 | } |
| 59997 | // and then apply a type eraser to remove any remaining circularly dependent type parameters |
| 59998 | baseConstraints = instantiateTypes(baseConstraints, typeEraser); |
| 59999 | return signature.baseSignatureCache = instantiateSignature(signature, createTypeMapper(typeParameters, baseConstraints), /*eraseTypeParameters*/ true); |
| 60000 | } |
| 60001 | return signature; |
| 60002 | } |
| 60003 | function getOrCreateTypeFromSignature(signature) { |
| 60004 | var _a; |
| 60005 | // There are two ways to declare a construct signature, one is by declaring a class constructor |
no test coverage detected
searching dependent graphs…