Почему бы не дать намек, что вы хотите, чтобы это был тип объединения?
abc<string | number>([[1], ['string'], [2], [3]])
В вашем случае выдает ошибку, поскольку TS предполагает, что вы хотите, чтобы T
был единичным типом, а не типом объединения.
Представьте, что TS всегда соглашался с любыми типами, которые вы помещаете в массив, и просто расширял тип, чтобы соответствовать ему. Вы потеряете все преимущества проверки типов и, возможно, в итоге получите string | number | boolean | etc
тип объединения, который по существу эквивалентен any
и вряд ли будет тем, что вы намеревались.