Вы должны сообщить TypeScript, какова связь между внутренним элементом и вашим пользовательским реквизитом.
interface OverriddenProps extends JSX.IntrinsicElements {
a: AnchorProps;
p: ParagraphProps;
}
Создайте свой Overrides
сопоставленный тип:
type Overrides = {
[Tag in keyof JSX.IntrinsicElements]?: {
component: React.ComponentType<OverriddenProps[Tag]>;
props: OverriddenProps[Tag]
}
}
Вывод типа теперь будет работать правильно.
страница This HashSet MSDN конкретно говорит:
набор А является набором, который не содержит дублирующихся элементов, и чьи элементы без определенного порядка.
Я думаю статья, утверждая, что она сохраняет упорядочивание, является просто неправильным. Для простых тестов порядок вставки может быть сохранен из-за внутренней структуры, но это не гарантируется и будет не всегда прокладывать себе путь. Я попытаюсь придумать контрпример.
РЕДАКТИРОВАНИЕ: вот контрпример:
using System;
using System.Collections.Generic;
class Test
{
static void Main()
{
var set = new HashSet<int>();
set.Add(1);
set.Add(2);
set.Add(3);
set.Remove(2);
set.Add(4);
foreach (int x in set)
{
Console.WriteLine(x);
}
}
}
Это печатает 1, 4, 3 несмотря на 3 вставленный прежде 4.
Это возможно , что, если Вы никогда не удаляете объектов, это сохранит порядок вставки. Я не уверен, но я не был бы полностью удивлен. Однако я думаю, что это была бы очень плохая идея полагаться на это:
string.GetHashCode
реализация, не изменяющаяся - который некоторые люди действительно поддерживали в.NET 1,1 дня, и затем они были записаны, когда реализация сделала изменение в.NET 2.0... Состояния документации:
А HashSet< (< (T>)>) набор не отсортирован и не может содержать дублирующиеся элементы. Если дублирование порядка или элемента более важно, чем производительность для Вашего приложения, рассмотрите использование List< (< (T>)>) класс вместе с Методом сортировки.
Поэтому не имеет значения, сохраняет ли это на самом деле порядок элементов в текущей реализации, потому что это не документируется как выполнение так, и даже если это, кажется, теперь, это может измениться в будущем (даже в текущих исправлениях к платформе).
необходимо программировать против зарегистрированные контракты , не детали реализации .
Нет, набор хеша не сохранит порядок вставки, по крайней мере, не очевидно. Вы могли использовать LinkedHashSet (Java) или эквивалент. LinkedHashSet сохранит порядок.
<забастовка>, Если Вы хотите порядок, Вы не должны даже использовать набор во-первых забастовка>... не сделанный для заказанных элементов, кроме исключительных случаев.
РЕДАКТИРОВАНИЕ: кажется, что я проповедую:-/Извините.