TS não é minha especialidade, mas consigo ver erros nas respostas sugeridas.
A primeira solução está tipando array: number[]
porém a 'array' seria do tipo '{}[]' ou seja, uma array de objetos.
A segunda solução tem 2 erros. Ambos ocorrem no seu código.
1 - A array de objetos está sendo inicializada dentro da função, logo, cada vez que você chamar a função, todos os números serão criados novamente de forma inativa, não há memória salvando os que foram ativados.
2 - Na ativação está sendo feito active: item.value === numbers
, ou seja, mesmo se a função "decorasse" que o 10 já foi ativado, quando fosse a interação do 14, essa comparação retornaria FALSE, o que desativaria o 10 novamente.
O código abaixo eu fiz num editor online e funcionou:
function sorteiaNumero(numberArray: {value: number, active: boolean}[], numbers: number) {
const newArray = numberArray.map(item => {
return {
...item,
active: item.active? true : item.value === numbers
}
})
console.log(newArray);
return newArray
}
let numberArray = Array.from({ length: 60 }, (_, i) => ({ value: i, active: false }))
numberArray = sorteiaNumero(numberArray, 10)
numberArray = sorteiaNumero(numberArray, 14)
Repare que eu crio o 'numberArray' fora do escopo da função, e cada vez que eu chamo a função eu reatribuo os valores da 'numberArray', dessa forma, fica memorizado o número que foi ativado anteriormente.
Provavelmente dá pra refatorar, eu fiz "na pressa", mas acho que te atende por hora.