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 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
//// [inferenceDoesntCompareAgainstUninstantiatedTypeParameter.ts]
class ClassA<TEntityClass> {
constructor(private entity?: TEntityClass, public settings?: SettingsInterface<TEntityClass>) {
}
}
export interface ValueInterface<TValueClass> {
func?: (row: TValueClass) => any;
value?: string;
}
export interface SettingsInterface<TClass> {
values?: (row: TClass) => ValueInterface<TClass>[],
}
class ConcreteClass {
theName = 'myClass';
}
var thisGetsTheFalseError = new ClassA(new ConcreteClass(), {
values: o => [
{
value: o.theName,
func: x => 'asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj'
}
]
});
var thisIsOk = new ClassA<ConcreteClass>(new ConcreteClass(), {
values: o => [
{
value: o.theName,
func: x => 'asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj'
}
]
});
//// [inferenceDoesntCompareAgainstUninstantiatedTypeParameter.js]
"use strict";
exports.__esModule = true;
var ClassA = /** @class */ (function () {
function ClassA(entity, settings) {
this.entity = entity;
this.settings = settings;
}
return ClassA;
}());
var ConcreteClass = /** @class */ (function () {
function ConcreteClass() {
this.theName = 'myClass';
}
return ConcreteClass;
}());
var thisGetsTheFalseError = new ClassA(new ConcreteClass(), {
values: function (o) { return [
{
value: o.theName,
func: function (x) { return 'asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj'; }
}
]; }
});
var thisIsOk = new ClassA(new ConcreteClass(), {
values: function (o) { return [
{
value: o.theName,
func: function (x) { return 'asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj'; }
}
]; }
});
|