Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

TypeScript com Resource

Gostaria de saber como ficaria uma classe de serviço com typescript incluindo o resource.

7 respostas

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:

https://br.vuejs.org/v2/guide/typescript.html

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?

solução!

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.