Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update TypeScript typings with generic type parameters #1061

Merged
merged 1 commit into from Oct 20, 2017

Conversation

Projects
None yet
7 participants
@d-fischer
Copy link
Contributor

commented Aug 29, 2017

This aims to fix #718.
I know there's already an effort to fix this in #730. However, this PR differs in a few ways:

  • Rather than creating a new type that people would have to explicitly use in their variable declarations or as a cast, it adds an optional generic type parameter to AxiosPromise and AxiosResponse as well as AxiosInstance.get and similar methods. All instances of these new type parameters default to any, so backwards compatibility is ensured. If users want to add a type to the response data, they can do it using get<MyType>(...), and if they don't, they just keep their code as is and it still works the same.
  • It includes tests.

@d-fischer d-fischer changed the title Updated TypeScript typings with generic type parameters Update TypeScript typings with generic type parameters Aug 29, 2017

@coveralls

This comment has been minimized.

Copy link

commented Aug 29, 2017

Coverage Status

Coverage remained the same at 93.812% when pulling b0dccc6 on d-fischer:ts-generic-response into 07a7b7c on mzabriskie:master.

@jonlambert

This comment has been minimized.

Copy link

commented Oct 20, 2017

Has there been any movement on this? Currently using a basic wrapper around axios to get similar functionality but would be great to be able to do this natively 🎉

@nickuraltsev nickuraltsev merged commit 7133141 into axios:master Oct 20, 2017

1 check passed

continuous-integration/travis-ci/pr The Travis CI build passed
Details
@nickuraltsev

This comment has been minimized.

Copy link
Member

commented Oct 20, 2017

@d-fischer Thank you!

@psachs21

This comment has been minimized.

Copy link
Contributor

commented Oct 20, 2017

@nickuraltsev any idea when the next release will be? Looking to use these new typings.

@nickuraltsev

This comment has been minimized.

Copy link
Member

commented Oct 20, 2017

@psachs21 Hopefully, this weekend

@psachs21

This comment has been minimized.

Copy link
Contributor

commented Oct 20, 2017

jimthedev added a commit to commitizen/cz-cli that referenced this pull request May 24, 2018

chore(deps): update dependency axios to v0.18.0 (#488)
This Pull Request updates dependency [axios](https://github.com/axios/axios) from `v0.15.2` to `v0.18.0`



<details>
<summary>Release Notes</summary>

### [`v0.18.0`](https://github.com/axios/axios/blob/master/CHANGELOG.md#&#8203;0180-Feb-19-2018)
[Compare Source](axios/axios@v0.17.1...v0.18.0)
- Adding support for UNIX Sockets when running with Node.js ([#&#8203;1070](`axios/axios#1070))
- Fixing typings ([#&#8203;1177](`axios/axios#1177)):
    - AxiosRequestConfig.proxy: allows type false
    - AxiosProxyConfig: added auth field
- Adding function signature in AxiosInstance interface so AxiosInstance can be invoked ([#&#8203;1192](`axios/axios#1192), [#&#8203;1254](`axios/axios#1254))
- Allowing maxContentLength to pass through to redirected calls as maxBodyLength in follow-redirects config ([#&#8203;1287](`axios/axios#1287))
- Fixing configuration when using an instance - method can now be set ([#&#8203;1342](`axios/axios#1342))

---

### [`v0.17.1`](https://github.com/axios/axios/blob/master/CHANGELOG.md#&#8203;0171-Nov-11-2017)
[Compare Source](axios/axios@v0.17.0...v0.17.1)
- Fixing issue with web workers ([#&#8203;1160](`axios/axios#1160))
- Allowing overriding transport ([#&#8203;1080](`axios/axios#1080))
- Updating TypeScript typings ([#&#8203;1165](`axios/axios#1165), [#&#8203;1125](`axios/axios#1125), [#&#8203;1131](`axios/axios#1131))

---

### [`v0.17.0`](https://github.com/axios/axios/blob/master/CHANGELOG.md#&#8203;0170-Oct-21-2017)
[Compare Source](axios/axios@v0.16.2...v0.17.0)
- **BREAKING** Fixing issue with `baseURL` and interceptors ([#&#8203;950](`axios/axios#950))
- **BREAKING** Improving handing of duplicate headers ([#&#8203;874](`axios/axios#874))
- Adding support for disabling proxies ([#&#8203;691](`axios/axios#691))
- Updating TypeScript typings with generic type parameters ([#&#8203;1061](`axios/axios#1061))

---

### [`v0.16.2`](https://github.com/axios/axios/blob/master/CHANGELOG.md#&#8203;0162-Jun-3-2017)
[Compare Source](axios/axios@v0.16.1...v0.16.2)
- Fixing issue with including `buffer` in bundle ([#&#8203;887](`axios/axios#887))
- Including underlying request in errors ([#&#8203;830](`axios/axios#830))
- Convert `method` to lowercase ([#&#8203;930](`axios/axios#930))

---

### [`v0.16.1`](https://github.com/axios/axios/blob/master/CHANGELOG.md#&#8203;0161-Apr-8-2017)
[Compare Source](axios/axios@v0.16.0...v0.16.1)
- Improving HTTP adapter to return last request in case of redirects ([#&#8203;828](`axios/axios#828))
- Updating `follow-redirects` dependency ([#&#8203;829](`axios/axios#829))
- Adding support for passing `Buffer` in node ([#&#8203;773](`axios/axios#773))

---

### [`v0.16.0`](https://github.com/axios/axios/blob/master/CHANGELOG.md#&#8203;0160-Mar-31-2017)
[Compare Source](axios/axios@v0.15.3...v0.16.0)
- **BREAKING** Removing `Promise` from axios typings in favor of built-in type declarations ([#&#8203;480](`axios/axios#480))
- Adding `options` shortcut method ([#&#8203;461](`axios/axios#461))
- Fixing issue with using `responseType: 'json'` in browsers incompatible with XHR Level 2 ([#&#8203;654](`axios/axios#654))
- Improving React Native detection ([#&#8203;731](`axios/axios#731))
- Fixing `combineURLs` to support empty `relativeURL` ([#&#8203;581](`axios/axios#581))
- Removing `PROTECTION_PREFIX` support ([#&#8203;561](`axios/axios#561))

---

### [`v0.15.3`](https://github.com/axios/axios/blob/master/CHANGELOG.md#&#8203;0153-Nov-27-2016)
[Compare Source](axios/axios@v0.15.2...v0.15.3)
- Fixing issue with custom instances and global defaults ([#&#8203;443](`axios/axios#443))
- Renaming `axios.d.ts` to `index.d.ts` ([#&#8203;519](`axios/axios#519))
- Adding `get`, `head`, and `delete` to `defaults.headers` ([#&#8203;509](`axios/axios#509))
- Fixing issue with `btoa` and IE ([#&#8203;507](`axios/axios#507))
- Adding support for proxy authentication ([#&#8203;483](`axios/axios#483))
- Improving HTTP adapter to use `http` protocol by default ([#&#8203;493](`axios/axios#493))
- Fixing proxy issues ([#&#8203;491](`axios/axios#491))

---

</details>




---

This PR has been generated by [Renovate Bot](https://renovatebot.com).
@christopher1986

This comment has been minimized.

Copy link

commented Jan 29, 2019

I don't know if this is desired behaviour but when using async/await my IDE (IntelliJ) indicates that response is a User object. In the second example everything works as expected and reponse is a AxiosPromise<User> object.

Maybe I am doing something wrong but I would have expected that async/await would also return a AxiosPromise object.

import axios from 'axios';

async function asyncBroken() {
    const response = await axios.get<User>.get('http://localhost/users');
    response.data // Unresolved variable data here because User is inferred.
}

function getUsers() {
    axios.get<User>.get('http://localhost/users').then((response) => resonse.data);
}
@A1vinSmith

This comment has been minimized.

Copy link

commented May 1, 2019

(res: AxiosResponse)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.