Skip to content

Commit 4fc438e

Browse files
committed
Merge pull request DefinitelyTyped#5974 from JKillian/fix-classNames-types
Accept arrays and nested arrays
2 parents f0a9cd8 + 8287192 commit 4fc438e

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

classnames/classnames-tests.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,16 @@ classNames('foo', 'bar'); // => 'foo bar'
88
classNames('foo', { bar: true }); // => 'foo bar'
99
classNames({ foo: true }, { bar: true }); // => 'foo bar'
1010
classNames({ foo: true, bar: true }); // => 'foo bar'
11+
classNames(10, 11); // => '10 11';
1112

1213
// lots of arguments of various types
13-
classNames('foo', { bar: true, duck: false }, 'baz', { quux: true }) // => 'foo bar baz quux'
14+
classNames('foo', { bar: true, duck: false }, 'baz', { quux: true }); // => 'foo bar baz quux'
15+
16+
classNames(['foo', 'bar', 'baz']); // => 'foo bar baz'
17+
classNames([1, 2, 3]); // => '1 2 3'
18+
classNames([{ foo: true, bar: false }, { baz: true }]); // => 'foo baz'
19+
20+
classNames(["foo", ["bar", {baz: true}]]); // => 'foo bar baz'
1421

1522
// other falsy values are just ignored
1623
// NOTE: We don't really want to allow this kind of thing with Typescript (otherwise what's the point!)

classnames/classnames.d.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
// Type definitions for classnames
22
// Project: https://github.com/JedWatson/classnames
3-
// Definitions by: Dave Keen <http://www.keendevelopment.ch>, Adi Dahiya <https://github.com/adidahiya>
3+
// Definitions by: Dave Keen <http://www.keendevelopment.ch>, Adi Dahiya <https://github.com/adidahiya>, Jason Killian <https://github.com/JKillian>
44
// Definitions: https://github.com/borisyankov/DefinitelyTyped
55

6+
declare type ClassValue = string | number | ClassDictionary | ClassArray;
7+
68
interface ClassDictionary {
79
[id: string]: boolean;
810
}
911

12+
interface ClassArray extends Array<ClassValue> { }
13+
1014
interface ClassNamesFn {
11-
(...classes: (string | ClassDictionary)[]): string;
15+
(...classes: ClassValue[]): string;
1216
}
1317

1418
declare var classNames: ClassNamesFn;

0 commit comments

Comments
 (0)