78 lines
2.3 KiB
Plaintext
78 lines
2.3 KiB
Plaintext
![]() |
exports[`test constructors.js 1`] = `
|
||
|
"// Foo is a class-like function
|
||
|
function Foo() {
|
||
|
this.x = 0; // constructs objects with property x
|
||
|
}
|
||
|
Foo.y = 0; // has static property y
|
||
|
Foo.prototype = { m() { return 0; } };
|
||
|
|
||
![]() |
// exporting Foo directly doesn\'t work
|
||
|
// Foo\'s instance and static props are not picked up
|
||
![]() |
exports.Foo = Foo;
|
||
|
|
||
|
// so you want to type Foo, by declaring it as a class
|
||
|
interface IFooPrototype {
|
||
|
m: () => number;
|
||
|
}
|
||
|
interface IFoo extends IFooPrototype {
|
||
|
x: boolean; // error, should have declared x: number instead
|
||
|
static (): void;
|
||
|
static y: boolean; // error, should have declared static y: number instead
|
||
|
}
|
||
|
exports.Foo2 = (Foo: Class<IFoo>);
|
||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
![]() |
// Foo is a class-like function
|
||
|
function Foo() {
|
||
![]() |
this.x = 0; // constructs objects with property x
|
||
![]() |
}
|
||
![]() |
Foo.y = 0;
|
||
![]() |
// has static property y
|
||
![]() |
Foo.prototype = {
|
||
|
m() {
|
||
![]() |
return 0;
|
||
![]() |
}
|
||
|
};
|
||
![]() |
|
||
|
// exporting Foo directly doesn\'t work
|
||
|
// Foo\'s instance and static props are not picked up
|
||
![]() |
exports.Foo = Foo;
|
||
![]() |
|
||
|
// so you want to type Foo, by declaring it as a class
|
||
![]() |
interface IFooPrototype { m(): number }
|
||
![]() |
interface IFoo extends IFooPrototype {
|
||
![]() |
/* error, should have declared x: number instead*/
|
||
![]() |
static (): void,
|
||
|
x: boolean,
|
||
![]() |
static y: boolean /* error, should have declared static y: number instead*/
|
||
![]() |
}
|
||
![]() |
exports.Foo2 = (Foo: Class<IFoo>);
|
||
|
"
|
||
![]() |
`;
|
||
|
|
||
|
exports[`test test.js 1`] = `
|
||
![]() |
"var Foo = require(\'./constructors\').Foo;
|
||
![]() |
var x: string = new Foo().x; // error, found number instead of string
|
||
|
var y: string = Foo.y; // error, found number instead of string
|
||
|
var z: string = new Foo().m();
|
||
|
|
||
![]() |
var Foo2 = require(\'./constructors\').Foo2;
|
||
![]() |
var x2: string = new Foo2().x; // error, found boolean instead of string
|
||
|
var y2: string = Foo2.y; // error, found boolean instead of string
|
||
|
var z2: string = new Foo2().m();
|
||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
![]() |
var Foo = require(\"./constructors\").Foo;
|
||
![]() |
var x: string = new Foo().x;
|
||
![]() |
// error, found number instead of string
|
||
![]() |
var y: string = Foo.y;
|
||
![]() |
// error, found number instead of string
|
||
![]() |
var z: string = new Foo().m();
|
||
![]() |
|
||
![]() |
var Foo2 = require(\"./constructors\").Foo2;
|
||
![]() |
var x2: string = new Foo2().x;
|
||
![]() |
// error, found boolean instead of string
|
||
![]() |
var y2: string = Foo2.y;
|
||
![]() |
// error, found boolean instead of string
|
||
![]() |
var z2: string = new Foo2().m();
|
||
|
"
|
||
![]() |
`;
|