-
Notifications
You must be signed in to change notification settings - Fork 28
/
Copy pathmap-model.test-d.ts
26 lines (19 loc) · 971 Bytes
/
map-model.test-d.ts
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
import {expectError, expectType} from 'tsd';
import { ObjectModel } from '../src/object-model';
import { MapModel } from '../src/map-model';
expectType<Map<number, boolean>>(MapModel(Number, Boolean)(new Map([[1, true],[2, false]])));
const Question = ObjectModel({ q: String })
const Response = ObjectModel({ r: String })
const Quiz = MapModel(Question, Response);
expectType<Map<{ q: string }, { r: string }>>(Quiz(new Map([])));
const MapModel1 = MapModel(String, Date)
const MapModel2 = MapModel1.extend([ ObjectModel({ ref: String }), Number], [ ObjectModel({ date: Date }), String])
expectType<Map<string | number | { ref: string }, Date | string | { date: Date }>>(MapModel2([
["a", new Date()],
[2, "b"],
[{ ref: "c"}, { date: new Date() }]
]))
const M = MapModel(Number, String).defaultTo(new Map([[1, "first"]]))
expectType<Map<number, string>>(new M())
expectError(MapModel(Number, String).defaultTo("not a map"))
expectError(M("not a map"))