@@ -4,13 +4,11 @@ import unified = require('unified')
44import is = require( 'unist-util-is' )
55import convert = require( 'unist-util-is/convert' )
66
7- /*=== setup === */
7+ /* Setup. */
88interface Element extends Parent {
99 type : 'element'
1010 tagName : string
11- properties : {
12- [ key : string ] : unknown
13- }
11+ properties : Record < string , unknown >
1412 content : Node
1513 children : Node [ ]
1614}
@@ -38,32 +36,32 @@ const isHeading = (node: unknown): node is Heading =>
3836const isElement = ( node : unknown ) : node is Element =>
3937 typeof node === 'object' && node !== null && ( node as Node ) . type === 'element'
4038
41- /*=== types cannot be narrowed without predicate === */
39+ /* Types cannot be narrowed without predicate. */
4240// $ExpectError
4341const maybeHeading : Heading = heading
4442// $ExpectError
4543const maybeElement : Element = element
4644
47- /*=== missing params === */
45+ /* Missing parameters. */
4846// $ExpectError
4947is ( )
5048// $ExpectError
5149is < Node > ( )
5250// $ExpectError
5351is < Node > ( heading )
5452
55- /*=== invalid generic === */
53+ /* Incorrect generic. */
5654// $ExpectError
5755is < string > ( heading , 'heading' )
5856// $ExpectError
5957is < boolean > ( heading , 'heading' )
6058// $ExpectError
61- is < { } > ( heading , 'heading' )
59+ is < Record < string , unknown > > ( heading , 'heading' )
6260
63- /*=== assignable to boolean === */
61+ /* Should be assignable to boolean. */
6462const wasItAHeading : boolean = is < Heading > ( heading , 'heading' )
6563
66- /*=== type string test === */
64+ /* Should support string tests. */
6765is < Heading > ( heading , 'heading' )
6866is < Heading > ( element , 'heading' )
6967// $ExpectError
@@ -86,7 +84,7 @@ if (is<Element>(element, 'element')) {
8684 const maybeNotElement : Heading = element
8785}
8886
89- /*=== type predicate function test === */
87+ /* Should support function tests. */
9088is ( heading , isHeading )
9189is ( element , isHeading )
9290// $ExpectError
@@ -109,7 +107,7 @@ if (is(element, isElement)) {
109107 const maybeNotElement : Heading = element
110108}
111109
112- /*=== type object test === */
110+ /* Should support object tests. */
113111is < Heading > ( heading , { type : 'heading' , depth : 2 } )
114112is < Heading > ( element , { type : 'heading' , depth : 2 } )
115113// $ExpectError
@@ -132,12 +130,13 @@ if (is<Element>(element, {type: 'element', tagName: 'section'})) {
132130 const maybeNotElement : Heading = element
133131}
134132
135- /*=== type array of tests === */
133+ /* Should support array tests. */
136134is < Heading | Element | Paragraph > ( heading , [
137135 'heading' ,
138136 isElement ,
139137 { type : 'ParagraphNode' }
140138] )
139+
141140if (
142141 is < Heading | Element | Paragraph > ( heading , [
143142 'heading' ,
@@ -150,30 +149,38 @@ if (
150149 heading // $ExpectType Heading
151150 break
152151 }
152+
153153 case 'element' : {
154154 heading // $ExpectType Element
155155 break
156156 }
157+
157158 case 'ParagraphNode' : {
158159 heading // $ExpectType Paragraph
159160 break
160161 }
162+
161163 // $ExpectError
162164 case 'dne' : {
163165 break
164166 }
167+
168+ default : {
169+ break
170+ }
165171 }
166172}
167173
168- /*=== usable in unified transform === */
174+ /* Should support being used in a unified transform. */
169175unified ( ) . use ( ( ) => ( tree ) => {
170176 if ( is < Heading > ( tree , 'heading' ) ) {
171- // do something
177+ // Do something
172178 }
179+
173180 return tree
174181} )
175182
176- /*=== convert === */
183+ /* Should support ` convert`. */
177184convert < Heading > ( 'heading' )
178185// $ExpectError
179186convert < Heading > ( 'element' )
0 commit comments