@@ -82,3 +82,119 @@ import flatten4d = require( './index' );
82
82
flatten4d ( x , [ 2 , 1 , 1 , 2 ] ) ; // $ExpectError
83
83
flatten4d ( x , [ 2 , 1 , 1 , 2 ] , false , { } ) ; // $ExpectError
84
84
}
85
+
86
+ // Attached to the main export is an `assign` method which returns a collection...
87
+ {
88
+ const x = [ [ [ [ 1 , 2 ] ] ] , [ [ [ 3 , 4 ] ] ] ] ;
89
+
90
+ const out1 = [ 0 , 0 , 0 , 0 ] ;
91
+
92
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , out1 , 1 , 0 ) ; // $ExpectType Collection<number>
93
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , true , out1 , 1 , 0 ) ; // $ExpectType Collection<number>
94
+
95
+ flatten4d . assign < number , number > ( x , [ 2 , 1 , 1 , 2 ] , false , out1 , 1 , 0 ) ; // $ExpectType Collection<number>
96
+ flatten4d . assign < number , number > ( x , [ 2 , 1 , 1 , 2 ] , true , out1 , 1 , 0 ) ; // $ExpectType Collection<number>
97
+
98
+ const out2 = [ '' , '' , '' , '' ] ;
99
+
100
+ flatten4d . assign < string , string > ( [ [ [ [ '1' , '2' ] ] ] , [ [ [ '3' , '4' ] ] ] ] , [ 2 , 1 , 1 , 2 ] , false , out2 , 1 , 0 ) ; // $ExpectType Collection<string>
101
+ flatten4d . assign < string , string > ( [ [ [ [ '1' , '2' ] ] ] , [ [ [ '3' , '4' ] ] ] ] , [ 2 , 1 , 1 , 2 ] , true , out2 , 1 , 0 ) ; // $ExpectType Collection<string>
102
+ }
103
+
104
+ // The compiler throws an error if the `assign` method is provided a first argument which is not an array-like object...
105
+ {
106
+ const out = [ 0 , 0 , 0 , 0 ] ;
107
+
108
+ flatten4d . assign ( 1 , [ 2 , 1 , 1 , 2 ] , false , out , 1 , 0 ) ; // $ExpectError
109
+ flatten4d . assign ( true , [ 2 , 1 , 1 , 2 ] , false , out , 1 , 0 ) ; // $ExpectError
110
+ flatten4d . assign ( false , [ 2 , 1 , 1 , 2 ] , false , out , 1 , 0 ) ; // $ExpectError
111
+ flatten4d . assign ( null , [ 2 , 1 , 1 , 2 ] , false , out , 1 , 0 ) ; // $ExpectError
112
+ flatten4d . assign ( void 0 , [ 2 , 1 , 1 , 2 ] , false , out , 1 , 0 ) ; // $ExpectError
113
+ flatten4d . assign ( { } , [ 2 , 1 , 1 , 2 ] , false , out , 1 , 0 ) ; // $ExpectError
114
+ }
115
+
116
+ // The compiler throws an error if the `assign` method is provided a second argument which is not an array-like object containing numbers...
117
+ {
118
+ const x = [ [ [ [ 1 , 2 ] ] ] , [ [ [ 3 , 4 ] ] ] ] ;
119
+ const out = [ 0 , 0 , 0 , 0 ] ;
120
+
121
+ flatten4d . assign ( x , '' , false , out , 1 , 0 ) ; // $ExpectError
122
+ flatten4d . assign ( x , 1 , false , out , 1 , 0 ) ; // $ExpectError
123
+ flatten4d . assign ( x , true , false , out , 1 , 0 ) ; // $ExpectError
124
+ flatten4d . assign ( x , false , false , out , 1 , 0 ) ; // $ExpectError
125
+ flatten4d . assign ( x , null , false , out , 1 , 0 ) ; // $ExpectError
126
+ flatten4d . assign ( x , void 0 , false , out , 1 , 0 ) ; // $ExpectError
127
+ flatten4d . assign ( x , { } , false , out , 1 , 0 ) ; // $ExpectError
128
+ flatten4d . assign ( x , [ 1 , '2' , 3 ] , false , out , 1 , 0 ) ; // $ExpectError
129
+ flatten4d . assign ( x , ( x : number ) : number => x , false , out , 1 , 0 ) ; // $ExpectError
130
+ }
131
+
132
+ // The compiler throws an error if the `assign` method is provided a third argument which is not a boolean...
133
+ {
134
+ const x = [ [ [ [ 1 , 2 ] ] ] , [ [ [ 3 , 4 ] ] ] ] ;
135
+ const out = [ 0 , 0 , 0 , 0 ] ;
136
+
137
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , '' , out , 1 , 0 ) ; // $ExpectError
138
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , 1 , out , 1 , 0 ) ; // $ExpectError
139
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , null , out , 1 , 0 ) ; // $ExpectError
140
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , void 0 , out , 1 , 0 ) ; // $ExpectError
141
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , { } , out , 1 , 0 ) ; // $ExpectError
142
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , [ ] , out , 1 , 0 ) ; // $ExpectError
143
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , ( x : number ) : number => x , out , 1 , 0 ) ; // $ExpectError
144
+ }
145
+
146
+ // The compiler throws an error if the `assign` method is provided a fourth argument which is not an array-like object...
147
+ {
148
+ const x = [ [ [ [ 1 , 2 ] ] ] , [ [ [ 3 , 4 ] ] ] ] ;
149
+
150
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , 1 , 1 , 0 ) ; // $ExpectError
151
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , true , 1 , 0 ) ; // $ExpectError
152
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , false , 1 , 0 ) ; // $ExpectError
153
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , null , 1 , 0 ) ; // $ExpectError
154
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , void 0 , 1 , 0 ) ; // $ExpectError
155
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , { } , 1 , 0 ) ; // $ExpectError
156
+ }
157
+
158
+ // The compiler throws an error if the `assign` method is provided a fifth argument which is not a number...
159
+ {
160
+ const x = [ [ [ [ 1 , 2 ] ] ] , [ [ [ 3 , 4 ] ] ] ] ;
161
+ const out = [ 0 , 0 , 0 , 0 ] ;
162
+
163
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , out , '1' , 0 ) ; // $ExpectError
164
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , out , true , 0 ) ; // $ExpectError
165
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , out , false , 0 ) ; // $ExpectError
166
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , out , null , 0 ) ; // $ExpectError
167
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , out , void 0 , 0 ) ; // $ExpectError
168
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , out , { } , 0 ) ; // $ExpectError
169
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , out , [ ] , 0 ) ; // $ExpectError
170
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , out , ( x : number ) : number => x , 0 ) ; // $ExpectError
171
+ }
172
+
173
+ // The compiler throws an error if the `assign` method is provided a sixth argument which is not a number...
174
+ {
175
+ const x = [ [ [ [ 1 , 2 ] ] ] , [ [ [ 3 , 4 ] ] ] ] ;
176
+ const out = [ 0 , 0 , 0 , 0 ] ;
177
+
178
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , out , 1 , '1' ) ; // $ExpectError
179
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , out , 1 , true ) ; // $ExpectError
180
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , out , 1 , false ) ; // $ExpectError
181
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , out , 1 , null ) ; // $ExpectError
182
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , out , 1 , void 0 ) ; // $ExpectError
183
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , out , 1 , { } ) ; // $ExpectError
184
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , out , 1 , [ ] ) ; // $ExpectError
185
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , out , 1 , ( x : number ) : number => x ) ; // $ExpectError
186
+ }
187
+
188
+ // The compiler throws an error if the `assign` method is provided an unsupported number of arguments...
189
+ {
190
+ const x = [ [ [ [ 1 , 2 ] ] ] , [ [ [ 3 , 4 ] ] ] ] ;
191
+ const out = [ 0 , 0 , 0 , 0 ] ;
192
+
193
+ flatten4d . assign ( ) ; // $ExpectError
194
+ flatten4d . assign ( x ) ; // $ExpectError
195
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] ) ; // $ExpectError
196
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false ) ; // $ExpectError
197
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , out ) ; // $ExpectError
198
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , out , 1 ) ; // $ExpectError
199
+ flatten4d . assign ( x , [ 2 , 1 , 1 , 2 ] , false , out , 1 , 0 , { } ) ; // $ExpectError
200
+ }
0 commit comments