Comments (5)
I certainly didn't mean that t => !isAnimal(t)
should return t is Rock
no matter what Something
is, that would be bonkers. Yes, I'd expect Exclude<Something, Animal>
, which in your example code was Rock
.
from typescript.
This is independent of filter()
:
function positive(t: Something) {
return isAnimal(t)
}
// function positive(t: Something): t is Animal
function negative(t: Something) {
return !isAnimal(t)
}
// function negative(t: Something): boolean
I'm surprised that #57465 didn't do this. Inside negative()
it certainly seems that !isAnimal(t)
narrows in the way we expect:
function negative(t: Something) {
if (!isAnimal(t)) {
((t));
//^? (parameter) t: Rock
} else {
((t));
//^? ^?(parameter) t: Animal
}
return !isAnimal(t)
}
from typescript.
Actually, it should be Exclude<Something, Animal>
because in the case we add another one, we want all except the one we are filtering out.
from typescript.
@jcalz I don't think there's anything #57465 could have done to help here. We don't have negated types so you can't say t is not Animal
--not even explicitly.
from typescript.
But we don't need t is not Animal
, only t is Rock
.
from typescript.
Related Issues (20)
- Incorrect Error Message: "Cannot assign to 'name' because it is a constant" Instead of "Identifier 'name' is not defined" for Undefined Identifier Assignment HOT 3
- Generic with extends yields to different type than directly specifying it HOT 5
- Instantiation expressions don't reject incompatible signatures in situations with mixed call and construct signatures HOT 1
- Parameters of overridden methods are made implicit any when using JSDoc `@override` HOT 16
- Auto complete and auto import not work (ReactJS, ChakraUI) HOT 9
- 'TypeScript and JavaScript Language Features' Formatter hangs HOT 3
- Mapped type of a conditional type unexpectedly fails inference
- Returing a generic argument from a function allows returning a wrong type HOT 2
- Module resolution behaves differently when typeRoots is specified HOT 3
- Ability to type check setters in interface implementations HOT 2
- ⚡ Performance: Project service spends excess time cleaning client files when called synchronously HOT 2
- ⚡ Performance: Project service doesn't cache all fs.statSync HOT 18
- jsxRuntime pragma does not work
- ThisType doesn't enforce type-checking `Object.prototype.call` HOT 5
- ⚡ Performance: Project service doesn't cache all fs.realpath HOT 1
- `null` prop with `satisfies`, `strictNullChecks: false` + `noImplicitAny: true` gives any report HOT 4
- Debugging failure caused by lack of backtick(`) HOT 4
- [proposal] Non widened string values should be valid enum values, like widened string values HOT 1
- 'Could not find source file' with Vue plugin when creating new files and using VS Code's file watcher HOT 7
- Contextual parameters inferred from overloads improvements
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from typescript.