{ hello: 'hi' }
                  
                  
                  
                  
                  
                  const p = new URLSearchParams(y)
                  
                  
                  
                  
                  
                  interface Params {
                  
                  
                      hello: string;
                  
                  
                  }
                  
                  
                  function f(a: Params) {
                  
                  
                      return new URLSearchParams(a);
                  
                  
                  }
                  
                  
                  
                  
                  
                  Почему в первом вызове URLSearchParams тс считает что всё норм, а во втором ошибка?
                  
                  
                  Type 'Params' is not assignable to type 'Record<string, string>'.
                  
                  
                      Index signature is missing in type 'Params'.
                  
                  
                
Потому что Params может быть расширен чем-то, что не Record<string, string>. Отнаследуй interface Params extends Record<string, string>
 from
                          earth
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          from
                          earth
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  понятно, спасибо А вот ещё момент. Я хочу сделать необязательный параметр (по задумке он может или отсутствовать, или быть строкой) interface Params extends Record<string, string> { hello: string; world?: string; } Я так понимаю ts не отличает отсутствующий ключ от ключ с undefined, и потому ругается Что тут можно придумать?
Почему? Отличает. На ключ с ? - keyof не отдаст название
 from
                          earth
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          from
                          earth
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Хм, тут хз. Мб попробовать наследоваться от Partial<Record<string, string>>, но не уверен
 from
                          earth
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          from
                          earth
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  тогда возвращается первоначальная ошибка)
Обсуждают сегодня