Gostaria de saber como ficaria uma classe de serviço com typescript incluindo o resource.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Gostaria de saber como ficaria uma classe de serviço com typescript incluindo o resource.
Não entendi sua dúvida. TypeScript é um superset do JavaScript, então sua classe já esta adequada para TypeScript. Pode detalhar o que deseja?
Claro! Estou tentando realizar o mesmo que no explicado no vídeo em .ts Mas acredito que devo importar algum @type pois ele reclama em alguns pontos. Segue meu código:
export default class TesteService {
private _resource: any;
constructor(resource: any) {
this._resource = resource('api/teste/listar');
}
list() {
return this._resource
.query()
.then(res => res.json());
}
}
realizei a criação da propriedade _resource pois o mesmo estava reclamando no constructor. Mas ele também está reclamando no res, nessa parte do código: .then(res => res.json()); Como poderia resolver isso com uma prática boa?
Você esta integrando um projeto Vue.js com TypeScript? Isso só possível se sua versão for acima da 2.5.0 e ainda assim integração ainda é incompleta, pois não há uma solução definitiva. Talvez seja esse o seu problema.
E quando você diz que o código "reclama", onde está a mensagem de erro?
Você pode conferir isso no site deles:
Se você esta tendo muito erro de tipagem é porque deve ter ativado noExplicitAny na sua configuração e isso o obrigará a tipar tudo, inclusive usando any quando não souber o tipo. Experimenta colocar false.
Olá! Eu tipei o retorno do seu list() para Promise<any>. Veja se isso ajuda:
export default class TesteService {
private _resource: any;
constructor(resource: any) {
this._resource = resource('api/teste/listar');
}
list(): Promise<any> {
return this._resource
.query()
.then(res => res.json());
}
}
Isso estou integrando em um projeto novo com Vue.js 2.5.11 A compilação está funcionando corretamente. Não sabia que ainda estava incompleta. Quando digo que ele reclama é porque no meu tsconfig.json estou adicionando a opção de compilação: noImplicityAny, então quando tento realizar o código da aula ele reclama em alguns pontos. Quando eu tento realizar o this._resource no constructor ele reclama do type então realizei a criação da propriedade: private _resource: any;isso resolveu este problema e gera também está gerando de forma correta o .js Mas no meu método list() quando eu tento realizar o .then(res => res.json()); ele reclama que não há nenhum tipo para o meu parametro res tentei realizar algo do tipo .then(res: any => res.json()) mas isso além de não me soar bem, não funciona. Existe alguma maneira de resolver este problema?
Excelente o Promise mas ele ainda continua dando erro no parâmetro res. Realmente se eu atribuir false para o noImplicityAny ele irá funcionar corretamente. Apenas acreditava que estava realizando de uma forma errada, e existia uma solução mais trivial.