-
Notifications
You must be signed in to change notification settings - Fork 692
/
intrinsic.ts
67 lines (60 loc) · 1.45 KB
/
intrinsic.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
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
import { Type } from './abstract';
/**
* Represents an intrinsic type like `string` or `boolean`.
*
* ~~~
* let value: number;
* ~~~
*/
export class IntrinsicType extends Type {
/**
* The name of the intrinsic type like `string` or `boolean`.
*/
name: string;
/**
* The type name identifier.
*/
readonly type: string = 'intrinsic';
/**
* Create a new instance of IntrinsicType.
*
* @param name The name of the intrinsic type like `string` or `boolean`.
*/
constructor(name: string) {
super();
this.name = name;
}
/**
* Clone this type.
*
* @return A clone of this type.
*/
clone(): Type {
return new IntrinsicType(this.name);
}
/**
* Test whether this type equals the given type.
*
* @param type The type that should be checked for equality.
* @returns TRUE if the given type equals this type, FALSE otherwise.
*/
equals(type: IntrinsicType): boolean {
return type instanceof IntrinsicType &&
type.name === this.name;
}
/**
* Return a raw object representation of this type.
* @deprecated Use serializers instead
*/
toObject(): any {
const result: any = super.toObject();
result.name = this.name;
return result;
}
/**
* Return a string representation of this type.
*/
toString() {
return this.name;
}
}