Não sei se existe uma forma "certa" para esse tipo de coisa.

Eu normalmente uso interface da mesma forma que outras linguagens como Java ou PHP, ou seja, mais próximo do escopo de classes mesmo.

Já o type, uso para definir as estrutura dos dados que não tem comportamentos, como DTOs ou parâmetros de funções.

Então para interface você usa para a definição das propriedades estáticas e métodos ao invés do retorno e o retorno você aplica o type?

Exemplo:

type RetornoType = {
  dado1: string;
  dado2: number;
};

interface TesteInterface {
  meuMetodo: () => RetornoType;
}

class Teste implements TesteInterface {
  meuMetodo(): RetornoType {
    return {
      dado1: 'oi',
      dado2: 123,
    };
  }
}
Mais ou menos isso mesmo. **interface** para definir comportamentos/contratos, e **type** para definir estruturas.