chore: Add generics to typescript generator (#4664)

* feat: Support generating generics in interfaces
* Switch struct to a template
* Support generics in apitypings
This commit is contained in:
Steven Masley
2022-10-20 08:15:24 -05:00
committed by GitHub
parent d0b1c36d51
commit 369b5d1c2d
9 changed files with 598 additions and 91 deletions

View File

@ -22,6 +22,21 @@ func Overlap[T comparable](a []T, b []T) bool {
})
}
// Unique returns a new slice with all duplicate elements removed.
// This is a slow function on large lists.
// TODO: Sort elements and implement a faster search algorithm if we
// really start to use this.
func Unique[T comparable](a []T) []T {
cpy := make([]T, 0, len(a))
for _, v := range a {
v := v
if !Contains(cpy, v) {
cpy = append(cpy, v)
}
}
return cpy
}
func OverlapCompare[T any](a []T, b []T, equal func(a, b T) bool) bool {
// For each element in b, if at least 1 is contained in 'a',
// return true.

View File

@ -9,6 +9,22 @@ import (
"github.com/coder/coder/coderd/util/slice"
)
func TestUnique(t *testing.T) {
t.Parallel()
require.ElementsMatch(t,
[]int{1, 2, 3, 4, 5},
slice.Unique([]int{
1, 2, 3, 4, 5, 1, 2, 3, 4, 5,
}))
require.ElementsMatch(t,
[]string{"a"},
slice.Unique([]string{
"a", "a", "a",
}))
}
func TestContains(t *testing.T) {
t.Parallel()