4 ms·
TypeScript's type system can do it: http://www.typescriptlang.org/play/#src=%0D%0A%0D%0Atype%20Att%3CT%20extends%20keyof%20HTMLElementTagNameMap%3E%20%3D%20%7B
by evmar 8y ago
TypeScript's type system can do it:
http://www.typescriptlang.org/play/#src=%0D%0A%0D%0Atype%20Att%3CT%20extends%20keyof%20HTMLElementTagNameMap%3E%20%3D%20%7B%0D%0A%20%20%20%20%5BK%20in%20keyof%20HTMLElementTagNameMap%5BT%5D%5D%3F%3A%20HTMLElementTagNameMap%5BT%5D%5BK%5D%3B%0D%0A%7D%0D%0A%0D%0Afunction%20tag%3CT%20extends%20keyof%20HTMLElementTagNameMap%3E(name%3A%20T%2C%20attrs%3A%20Att%3CT%3E)%20%7B%0D%0A%20%20%20%20%2F%2F%20code%20here.%0D%0A%7D%0D%0A%0D%0Atag('a'%2C%20%7B%20href%3A%20'asdfas'%20%7D)%3B%0D%0Atag('a'%2C%20%7B%20href%3A%203%20%7D)%3B%20%2F%2F%20fields%20are%20typed%0D%0Atag('div'%2C%20%7B%20href%3A%20'adfadf'%20%7D)%3B%20%20%2F%2F%20non-anchors%20have%20no%20href%0D%0A http://www.typescriptlang.org/play/#src=%0D%0A%0D%0Atype%20A...