Question: This function determines if all the elements in array are subset of each other 


// SECTION Toy_03
Array.prototype.isSubsetOf = function (array: string[]): boolean {
  if (!array.length) return true;
    return this.every((el: string): boolean => array.includes(el));

example output// 
let a = ['commit', 'push'];
a.isSubsetOf(['commit', 'rebase', 'push', 'blame']); // true
};

Estoy convirtiendo un par de mi código javascript en mecanografiado para practicar mecanografiado. Supongo que estoy haciendo todo correctamente, ya que toda la matriz que se supone que debo recibir a través de esta función es una matriz de cadena y que debería devolver un valor booleano.

Entonces obtengo dos errores como a continuación:

InSubsetOf: la propiedad 'isSubsetOf' no existe en el tipo 'any []'. ts (2339)

Incluye: la propiedad 'incluye' no existe en el tipo 'cadena []'. ts (2339)

Estoy tratando de entender por qué recibo este error y descubrí que estos dos son métodos de prototipo de objeto. ¿Hay algo que esté haciendo mal sintácticamente?

Por favor, aconséjelo.

2
paul.kim1901 28 oct. 2020 a las 09:07

1 respuesta

La mejor respuesta

Para tener includes en sus matrices, debe modificar su tsconfig:

{
  "compilerOptions": {
    "lib": [
       "dom",
       "es7"
    ]
  }
}

Para que su función isSubsetOf personalizada esté disponible en el prototipo de Array global, debe agregar explícitamente los tipos:

interface Array<T> {
  isSubsetOf(arr: T[]): boolean;
}

O globalmente:

declare global {
  interface Array<T> {
    isSubsetOf(arr: T[]): boolean;
  }
}

Patio de recreo

3
Martin Horváth 28 oct. 2020 a las 06:28