Skip to content

Commit 18f426b

Browse files
Add test spec for record types.
1 parent 3ff6ef4 commit 18f426b

File tree

1 file changed

+68
-57
lines changed

1 file changed

+68
-57
lines changed
Lines changed: 68 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,70 @@
11
// TypeScript Version: 2.2.1
22

3-
import {Record} from '../../../';
4-
5-
// let Point2 = Record<{ x: number, y: number }>({x: 0, y: 0});
6-
// let Point3 = Record<{ x: number, y: number, z: number }>({x: 0, y: 0, z: 0});
7-
// let GeoPoint = Record<{ lat: number | null, lon: number | null }>({lat: null, lon: null});
8-
//
9-
// Point2; // $ExpectType typeof Class<{ x: number; y: number; }>
10-
// Point3; // $ExpectType typeof Class<{ x: number; y: number; z: number; }>
11-
//
12-
// let origin2 = Point2({});
13-
// let origin3 = Point3({});
14-
// let geo = GeoPoint({lat: 34});
15-
// // $ExpectError
16-
// let mistake = Point2({x: 'string'});
17-
//
18-
// origin3 = GeoPoint({lat: 34});
19-
// geo = Point3({});
20-
//
21-
// origin2.get('x'); // $ExpectType any
22-
// origin2.x; // $ExpectType any
23-
// // $ExpectError
24-
// let pz = origin2.get('z');
25-
// // $ExpectError
26-
// let pz2 = origin2.z;
27-
//
28-
// origin2.set('x', 4);
29-
// // Note: this should be an error, but Flow does not yet support index types.
30-
// origin2.set('x', 'string');
31-
// // $ExpectError
32-
// origin2.set('z', 3);
33-
//
34-
// let name1: string = Record.getDescriptiveName(origin2);
35-
// // $ExpectError
36-
// let name2: string = Record.getDescriptiveName({});
37-
//
38-
// // Note: need to cast through any when extending Records as if they ere classes
39-
// class ABClass extends Record({a: 1, b: 2}) {
40-
// setA(a: number) {
41-
// return this.set('a', a);
42-
// }
43-
//
44-
// setB(b: number) {
45-
// return this.set('b', b);
46-
// }
47-
// }
48-
//
49-
// let t1 = new ABClass({a: 1});
50-
// let t2 = t1.setA(3);
51-
// let t3 = t2.setB(10);
52-
// // Note: flow does not check extended Record classes yet
53-
// let t4 = t2.setC(10);
54-
//
55-
// let t1a = t1.a;
56-
// // Note: flow does not check extended Record classes yet
57-
// let t1a: string = t1.a;
58-
// // Note: flow does not check extended Record classes yet
59-
// let t1c = t1.c;
3+
import { Record } from '../../../';
4+
5+
{ // Factory
6+
const PointXY = Record({ x: 0, y: 0 });
7+
8+
// $ExpectType Class<{ x: number; y: number; }>
9+
PointXY;
10+
11+
// $ ExpectError
12+
PointXY({ x: 'a' }); // FIXME
13+
14+
const pointXY = PointXY();
15+
16+
// $ExpectType any
17+
pointXY; // FIXME
18+
19+
// $ExpectType any
20+
pointXY.x; // FIXME
21+
22+
// $ ExpectError
23+
pointXY.x = 10; // FIXME
24+
25+
// $ExpectType any
26+
pointXY.y; // FIXME
27+
28+
// $ ExpectError
29+
pointXY.y = 10; // FIXME
30+
31+
// $ExpectError
32+
class PointClass extends PointXY { // FIXME
33+
setX(x: number) {
34+
// $ExpectError
35+
return this.set('x', x);
36+
}
37+
38+
setY(y: number) {
39+
// $ExpectError
40+
return this.set('y', y);
41+
}
42+
}
43+
44+
const point = new PointClass();
45+
46+
// $ExpectType PointClass
47+
point;
48+
49+
// $ExpectType any
50+
point.x; // $ExpectError FIXME
51+
52+
// $ExpectType any
53+
point.y; // $ExpectError FIXME
54+
55+
// $ ExpectType PointClass
56+
point.setX(10); // FIXME
57+
58+
// $ ExpectType PointClass
59+
point.setY(10); // FIXME
60+
}
61+
62+
{ // .getDescriptiveName
63+
const PointXY = Record({ x: 0, y: 0 });
64+
65+
// $ExpectType string
66+
Record.getDescriptiveName(PointXY());
67+
68+
// $ExpectError
69+
Record.getDescriptiveName({});
70+
}

0 commit comments

Comments
 (0)